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
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
-
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 SerDeDateTimeFormat
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 SerDe