Saltar al contenido

Problema de AWS Glue con comillas dobles y comas

Es imprescindible interpretar el código de forma correcta previamente a adaptarlo a tu trabajo y si tquieres aportar algo puedes comentarlo.

Solución:

Parece que también necesita agregar escapeChar. Los documentos de AWS Athena muestran este ejemplo:

CREATE EXTERNAL TABLE myopencsvtable (
   col1 string,
   col2 string,
   col3 string,
   col4 string
)
ROW FORMAT SERDE 
'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
   'separatorChar' = ',',
   'quoteChar' = '"',
   'escapeChar' = '\'
   )
STORED AS TEXTFILE
LOCATION 's3://location/of/csv/';

Hago esto para resolver:

1 – Cree un rastreador que no sobrescriba las propiedades de la tabla de destino, utilicé boto3 para esto, pero se puede crear en la consola de AWS para hacer esto (cambiar de xxx-var):

import boto3

client = boto3.client('glue')

response = client.create_crawler(
    Name='xxx-Crawler-Name',
    Role='xxx-Put-here-your-rol',
    DatabaseName='xxx-databaseName',
    Description='xxx-Crawler description if u need it',
    Targets=
        'S3Targets': [
            
                'Path': 's3://xxx-Path-to-s3/',
                'Exclusions': [
                ]
            ,
        ]
    ,
    SchemaChangePolicy=
        'UpdateBehavior': 'LOG',
        'DeleteBehavior': 'LOG'
    ,
    Configuration=' 
        "Version": 1.0, 
        "CrawlerOutput":  
            "Partitions": "AddOrUpdateBehavior": "InheritFromTable" 
            , 
            "Tables": "AddOrUpdateBehavior": "MergeNewColumns"  
          
    '
)

# run the crawler
response = client.start_crawler(
    Name='xxx-Crawler-Name'
)

2 – Edite la biblioteca de serialización, hago esto en la consola de AWS como dice esta publicación (https://docs.aws.amazon.com/athena/latest/ug/glue-best-practices.html#schema-csv-quotes) solo cambia esto:

org.apache.hadoop.hive.serde2.OpenCSVSerde

3 – Vuelva a ejecutar Crawler. Ejecute el rastreador como siempre:

Uso de la consola de AWS

4 – Eso es todo, su segunda ejecución no debería cambiar ningún dato en la tabla, es solo para probar que funciona ¯_(ツ)_/¯.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *