Trabajar con datos CSV en AWS Glue - Amazon Athena

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
  1. En el panel de navegación de la consola de AWS Glue, elija Tables.

  2. Elija el enlace para la tabla que quiere editar y, a continuación, elija Actions (Acciones), Edit table details (Editar detalles de la tabla).

  3. 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 y separatorChar:

      • Para escapeChar, ingrese una barra diagonal inversa (\).

      • Para quoteChar, ingrese una comilla doble (").

      • Para separatorChar, ingrese una coma (,).

  4. 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")