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:
3 – Vuelva a ejecutar Crawler. Ejecute el rastreador como siempre:
4 – Eso es todo, su segunda ejecución no debería cambiar ningún dato en la tabla, es solo para probar que funciona ¯_(ツ)_/¯.