Trabajar con datos CSV en AWS Glue
En esta página, se describe cómo utilizar AWS Glue para crear esquemas a partir de archivos CSV que contienen comillas alrededor de los valores de datos de cada columna o de archivos CSV que incluyen valores de encabezado.
Manejo de datos de archivos CSV entre comillas
Piense en un archivo CSV que contenga campos de datos entre comillas dobles como en el siguiente ejemplo.
"John","Doe","123-555-1231","John said \"hello\""
"Jane","Doe","123-555-9876","Jane said \"hello\""
Para ejecutar una consulta en Athena en una tabla creada a partir de un archivo CSV que contiene valores entre comillas, debe modificar las propiedades de la tabla en AWS Glue para utilizar el OpenCSVSerDe. Para obtener más información acerca de SerDe de OpenCSV, consulte Open CSV SerDe para el procesamiento de CSV.
Para editar propiedades de tabla en la consola de AWS Glue
-
En el panel de navegación de la consola de AWS Glue, elija Tables.
-
Elija el enlace para la tabla que quiere editar y, a continuación, elija Actions (Acciones), Edit table details (Editar detalles de la tabla).
-
En la página Editar tabla, realice los siguientes cambios:
-
En Serialization lib (Biblioteca de serialización), ingrese
org.apache.hadoop.hive.serde2.OpenCSVSerde
. -
Para Patrones de Serde, ingrese los siguientes valores para las claves
escapeChar
,quoteChar
yseparatorChar
:-
Para
escapeChar
, ingrese una barra diagonal inversa (\
). -
Para
quoteChar
, ingrese una comilla doble ("
). -
Para
separatorChar
, ingrese una coma (,
).
-
-
-
Seleccione Guardar.
Para obtener más información, consulte Visualización y edición de los detalles de una tabla en la Guía para desarrolladores de AWS Glue.
También se pueden actualizar las propiedades de la tabla AWS Glue mediante programación. Puede utilizar la operación de la API UpdateTable de AWS Glue o el comando de AWS CLI update-table para modificar el bloque SerDeInfo
en la definición de tabla, como en el siguiente ejemplo JSON.
"SerDeInfo": {
"name": "",
"serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
"parameters": {
"separatorChar": ","
"quoteChar": "\""
"escapeChar": "\\"
}
},
Manejo de archivos CSV con encabezados
Cuando define una tabla en Athena con una instrucción CREATE TABLE
, puede utilizar la propiedad de tabla skip.header.line.count
para ignorar los encabezados en los datos CSV, como en el siguiente ejemplo.
... STORED AS TEXTFILE LOCATION 's3://amzn-s3-demo-bucket/
csvdata_folder
/'; TBLPROPERTIES ("skip.header.line.count"="1")
También puede eliminar los encabezados de CSV de antemano para que la información de encabezado no se incluya en los resultados de la consulta de Athena. Una forma de hacerlo es utilizar trabajos de AWS Glue, que se encargan de las tareas de extracción, transformación y carga (ETL). Puede escribir scripts en AWS Glue en un lenguaje que es una extensión del dialecto PySpark Python. Para obtener más información, consulte la sección sobre creación de trabajos en GlueAWS en la Guía para desarrolladores de AWS Glue.
En el siguiente ejemplo se muestra una función de un script de AWS Glue que escribe un marco dinámico utilizando from_options
y establece la opción de formato writeHeader
como "false", lo que elimina la información de encabezado:
glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": "s3://amzn-s3-demo-bucket/MYTABLEDATA/"}, format = "csv", format_options = {"writeHeader": False}, transformation_ctx = "datasink2")