Quiero procesar archivos JSON en mi trabajo de ETL de AWS Glue.
Resolución
Conversión de archivos JSON a otro formato
Para convertir un archivo JSON a otro formato, utiliza Visual ETL para crear un trabajo de ETL de AWS Glue. En Origen de datos, elige JSON. En Destino de datos, elige el nuevo formato de archivo. Elige S3 como Tipo de nodo en Origen de datos y Destino de datos.
Creación de un clasificador JSON para leer datos JSON anidados
Si tu rastreador de AWS Glue debe leer columnas anidadas, crea un clasificador personalizado que se defina como un clasificador de JSON. A continuación, crea un nuevo rastreador de AWS Glue. Añade el clasificador de JSON personalizado a la lista de clasificadores de tu nuevo rastreador de AWS Glue.
Utiliza relationalize para convertir las columnas JSON anidadas en columnas en tu trabajo de ETL de AWS Glue. También puedes usar la opción jsonPath en los valores de las opciones de formato de tu configuración de trabajo de ETL de AWS Glue. Para ver ejemplos de código, consulta Example: Leer archivos o carpetas JSON de Amazon Simple Storage Service (Amazon S3).
Utiliza la opción unnest para convertir los campos anidados en objetos de nivel superior.
Uso de un rastreador de AWS Glue para analizar matrices JSON
De forma predeterminada, el rastreador de AWS Glue trata los datos como una sola matriz. Para crear un esquema que se base en cada registro de una matriz JSON, crea un clasificador de JSON personalizado. En Ruta JSON, introduce $[*].
Cuando utilices un trabajo de ETL de AWS Glue para leer una matriz JSON, utiliza la función explode de Apache Spark para convertir las matrices en filas. Para obtener más información, consulta pyspark.sql.functions.explode en el sitio web de Spark.
También puedes usar la función to_json de Spark para convertir las matrices en cadenas. Para obtener más información, consulta pyspark.sql.functions.to_json en el sitio web de Spark.
Solución de problemas de recuentos de DynamicFrame que no coinciden con el número de registros de un origen de datos
Si el recuento de DynamicFrame no coincide con el número de registros del origen de datos JSON, los datos contienen registros con formato incorrecto. Ejecuta el siguiente comando errorsAsDynamicFrame para localizar los registros con formato incorrecto en tu conjunto de datos:
# View error fields and error data
error_record = dynamicframe_df.errorsAsDynamicFrame().toDF().head()
Establecimiento del valor multiline para leer los registros JSON que contienen varias líneas
Si tu registro JSON abarca varias líneas, define el valor multiline en las opciones de formato de la configuración de trabajo de ETL de AWS Glue en true. De forma predeterminada, el valor multiline se establece en false.