Convertir le format des données d'entrée dans Amazon Data Firehose - Amazon Data Firehose

La diffusion de flux Amazon Data Firehose vers les tables Apache Iceberg dans Amazon S3 est en version préliminaire et peut faire l'objet de modifications.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Convertir le format des données d'entrée dans Amazon Data Firehose

Amazon Data Firehose peut convertir le format de vos données d'entrée JSON vers Apache Parquet ou Apache ORC avant de les stocker dans Amazon S3. Parquet et ORC sont des formats de données en colonnes qui économisent de l'espace et permettent des requêtes plus rapides par rapport aux formats orientés lignes tels que. JSON Si vous souhaitez convertir un format d'entrée autre que JSON des valeurs séparées par des virgules (CSV) ou du texte structuré, vous pouvez utiliser AWS Lambda pour le transformer en JSON premier. Pour de plus amples informations, veuillez consulter Transformez les données sources dans Amazon Data Firehose.

Vous pouvez convertir le format de vos données même si vous agrégez vos enregistrements avant de les envoyer à Amazon Data Firehose.

Amazon Data Firehose a besoin des trois éléments suivants pour convertir le format de vos données d'enregistrement :

Deserializer

Amazon Data Firehose nécessite un désérialiseur pour lire vos données d'entrée. JSON Vous pouvez choisir l'un des deux types de désérialiseur suivants.

Lorsque vous combinez plusieurs JSON documents dans le même enregistrement, assurez-vous que votre entrée est toujours présentée dans le JSON format pris en charge. Un tableau de JSON documents n'est pas une entrée valide.

Par exemple, voici la bonne entrée : {"a":1}{"a":2}

Et voici la saisie incorrecte : [{"a":1}, {"a":2}]

Choisissez OpenX JSON SerDe si votre entrée JSON contient des horodatages dans les formats suivants :

  • aaaa-MM-jj'T'HH:mm:ss[.S]'Z', où la fraction peut avoir jusqu'à 9 chiffres : Par exemple 2017-02-07T15:13:01.39256Z.

  • aaaa-[M]M-[d]j HH:mm:ss[.S], où la fraction peut avoir jusqu'à 9 chiffres : Par exemple 2017-02-07 15:13:01.14.

  • Heure Unix en secondes : Par exemple 1518033528.

  • Heure Unix en millisecondes : Par exemple 1518033528123.

  • Heure Unix en secondes à virgule flottante : Par exemple 1518033528.123.

L'OpenX JSON SerDe peut convertir des points (.) en traits de soulignement (). _ Il peut également convertir JSON les clés en minuscules avant de les désérialiser. Pour plus d'informations sur les options disponibles avec ce désérialiseur via Amazon Data Firehose, consultez O. penXJson SerDe

Si vous ne savez pas quel désérialiseur choisir, utilisez OpenX JSON SerDe, sauf si vous avez des horodatages qu'il ne supporte pas.

Si vous avez des horodatages dans des formats autres que ceux listés précédemment, utilisez Apache Hive. JSON SerDe Lorsque vous choisissez cette désérialiseur, vous pouvez spécifier les formats d'horodatage à utiliser. Pour ce faire, suivez la syntaxe du modèle des chaînes de format DateTimeFormat Joda Time. Pour plus d'informations, consultez la section Classe DateTimeFormat.

Vous pouvez également utiliser la valeur spéciale millis pour analyser les horodatages Unix en millisecondes. Si vous ne spécifiez aucun format, Amazon Data Firehose l'utilise java.sql.Timestamp::valueOf par défaut.

The Hive JSON SerDe n'autorise pas ce qui suit :

  • Des points (.) dans les noms de colonnes.

  • Les champs dont le type est uniontype.

  • Champs dont le schéma contient des types numériques, mais qui sont des chaînes dans leJSON. Par exemple, si le schéma est (un int) et le JSON est{"a":"123"}, la Hive génère SerDe une erreur.

The Hive SerDe ne convertit pas les chaînes imbriquéesJSON. Par exemple, si vous avez {"a":{"inner":1}}, il ne traite pas {"inner":1} comme une chaîne.

Schema

Amazon Data Firehose a besoin d'un schéma pour déterminer comment interpréter ces données. Utiliser AWS Glue pour créer un schéma dans AWS Glue Data Catalog. Amazon Data Firehose fait ensuite référence à ce schéma et l'utilise pour interpréter vos données d'entrée. Vous pouvez utiliser le même schéma pour configurer à la fois Amazon Data Firehose et votre logiciel d'analyse. Pour plus d'informations, voir Remplissage du AWS Catalogue de données Glue dans le AWS Glue Guide du développeur.

Note

Le schéma créé dans AWS Glue Le catalogue de données doit correspondre à la structure des données d'entrée. Sinon, les données converties ne contiendront pas d'attributs non spécifiés dans le schéma. Si vous utilisez NestedJSON, utilisez un STRUCT type dans le schéma qui reflète la structure de vos JSON données. Consultez cet exemple pour savoir comment gérer l'imbrication JSON avec un STRUCT type.

Important

Pour les types de données qui ne spécifient pas de limite de taille, il existe une limite pratique de 32 MBs pour toutes les données d'une seule ligne.

Si vous spécifiez une longueur pour CHAR ouVARCHAR, Firehose tronque les chaînes à la longueur spécifiée lorsqu'il lit les données d'entrée. Si la chaîne de données sous-jacente est plus longue, elle reste inchangée.

Serializer

Firehose nécessite un sérialiseur pour convertir les données dans le format de stockage en colonnes cible (Parquet ouORC). Vous pouvez choisir l'un des deux types de sérialiseurs suivants.

Le sérialiseur que vous choisissez dépend de vos besoins métier. Pour en savoir plus sur les deux options du sérialiseur, voir ORC SerDeet Parquet. SerDe