Convierte el formato de datos de entrada en Amazon Data Firehose - Amazon Data Firehose

La entrega de transmisiones de Amazon Data Firehose a Apache Iceberg Tables en Amazon S3 está en versión preliminar y está sujeta a cambios.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Convierte el formato de datos de entrada en Amazon Data Firehose

Amazon Data Firehose puede convertir el formato de los datos de entrada JSON a Apache Parquet o Apache ORC antes de almacenar los datos en Amazon S3. Parquet y ORC son formatos de datos en columnas que ahorran espacio y permiten realizar consultas más rápidas en comparación con otros formatos orientados a filas. JSON Si desea convertir un formato de entrada que no seaJSON, como valores separados por comas (CSV) o texto estructurado, puede utilizar AWS Lambda para transformarlo en el primero. JSON Para obtener más información, consulte Transforme los datos de origen en Amazon Data Firehose.

Puede convertir el formato de sus datos incluso si agrega sus registros antes de enviarlos a Amazon Data Firehose.

Amazon Data Firehose requiere los tres elementos siguientes para convertir el formato de los datos de sus registros:

Deserializer

Amazon Data Firehose requiere un deserializador para leer los JSON datos de entrada. Puede elegir uno de los siguientes dos tipos de deserializador.

Al combinar varios JSON documentos en el mismo registro, asegúrese de que la entrada siga presentándose en el formato compatible. JSON Una matriz de JSON documentos no es una entrada válida.

Por ejemplo, esta es la entrada correcta: {"a":1}{"a":2}

Y esta es la entrada incorrecta: [{"a":1}, {"a":2}]

Elija OpenX JSON SerDe si su entrada JSON contiene marcas de tiempo en los siguientes formatos:

  • aaaa-MM-dd'T'HH:mm:ss[.S]'Z', donde la fracción puede tener hasta 9 dígitos: por ejemplo, 2017-02-07T15:13:01.39256Z.

  • aaaa-[M]M-[d]d HH:mm:ss[.S], donde la fracción puede tener hasta 9 dígitos: por ejemplo, 2017-02-07 15:13:01.14.

  • Segundos epoch: por ejemplo, 1518033528.

  • Milisegundos epoch: por ejemplo, 1518033528123.

  • Segundos epoch con número de punto flotante: por ejemplo, 1518033528.123.

El OpenX JSON SerDe puede convertir puntos (.) en guiones bajos (). _ También puede convertir JSON claves a minúsculas antes de deserializarlas. Para obtener más información sobre las opciones disponibles con este deserializador a través de Amazon Data Firehose, consulte O. penXJson SerDe

Si no estás seguro de qué deserializador elegir, usa OpenX JSON SerDe, a menos que tengas marcas de tiempo que no sean compatibles.

Si tiene marcas de tiempo en formatos distintos a los enumerados anteriormente, utilice Apache Hive. JSON SerDe Si elige este deserializador, puede especificar los formatos de marca temporal que va a utilizar. Para ello, siga la sintaxis de los patrones de las cadenas de formato DateTimeFormat de Joda-Time. Para obtener más información, consulte Clase DateTimeFormat.

También puede utilizar el valor especial millis para analizar las marcas temporales en milisegundos con formato de tiempo Unix. Si no especificas ningún formato, Amazon Data Firehose lo utilizará de forma predeterminadajava.sql.Timestamp::valueOf.

The Hive JSON SerDe no permite lo siguiente:

  • Puntos (.) en los nombres de las columnas.

  • Campos cuyo tipo sea uniontype.

  • Campos que tienen tipos numéricos en el esquema, pero que son cadenas en elJSON. Por ejemplo, si el esquema es (un int) y el JSON es{"a":"123"}, la colmena SerDe genera un error.

La colmena SerDe no convierte las cadenas anidadas en cadenasJSON. Por ejemplo, si se tiene {"a":{"inner":1}}, no trata {"inner":1} como una cadena.

Esquema

Amazon Data Firehose requiere un esquema para determinar cómo interpretar esos datos. Utilizar AWS Glue para crear un esquema en el AWS Glue Data Catalog. A continuación, Amazon Data Firehose hace referencia a ese esquema y lo utiliza para interpretar los datos de entrada. Puede usar el mismo esquema para configurar Amazon Data Firehose y su software de análisis. Para obtener más información, consulte Rellenar el AWS Glue Data Catalog en el AWS Glue Guía para desarrolladores.

nota

El esquema creado en AWS Glue El catálogo de datos debe coincidir con la estructura de datos de entrada. De lo contrario, los datos convertidos no contendrán atributos que no estén especificados en el esquema. Si usa anidadosJSON, use un STRUCT tipo en el esquema que refleje la estructura de JSON los datos. Consulta este ejemplo para saber cómo gestionar los anidados JSON con un STRUCT tipo.

importante

Para los tipos de datos que no especifican un límite de tamaño, existe un límite práctico de 32 MBs para todos los datos de una sola fila.

Si especifica la longitud para CHAR oVARCHAR, Firehose trunca las cadenas a la longitud especificada cuando lee los datos de entrada. Si la cadena de datos subyacente es más larga, permanece inalterada.

Serializer

Firehose requiere un serializador para convertir los datos al formato de almacenamiento en columnas de destino (Parquet oORC): puede elegir uno de los dos tipos siguientes de serializadores.

El serializador que elija depende de sus necesidades empresariales. Para obtener más información sobre las dos opciones de serializador, consulte Parquet. ORC SerDe SerDe