Ruche JSON SerDe - Amazon Athena

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.

Ruche JSON SerDe

La ruche JSON SerDe est couramment utilisée pour traiter des JSON données telles que des événements. Ces événements sont représentés sous forme de chaînes de texte JSON codé d'une seule ligne séparées par une nouvelle ligne. The Hive n'JSON SerDe autorise pas la duplication de clés map ou de noms de struct clés.

Note

Le SerDe s'attend à ce que chaque JSON document se trouve sur une seule ligne de texte, aucun caractère de fin de ligne ne séparant les champs de l'enregistrement. Si le JSON texte est dans un joli format d'impression, vous pouvez recevoir un message d'erreur tel que HIVECURSOR_ _ ERROR : La ligne n'est pas un JSON objet valide ou HIVECURSOR_ _ ERROR JsonParseException end-of-input : Inattendu : marqueur de fermeture attendu OBJECT lorsque vous essayez d'interroger la table après l'avoir créée. Pour plus d'informations, consultez la section Fichiers de JSON données dans la SerDe documentation OpenX sur. GitHub

L'exemple d'DDLénoncé suivant utilise le Hive JSON SerDe pour créer un tableau basé sur des exemples de données publicitaires en ligne. Dans la LOCATION clause, remplacez myregion s3://amzn-s3-demo-bucket.elasticmapreduce/samples/hive-ads/tables/impressionsavec l'identifiant de la région dans laquelle vous exécutez Athena (par exemple,s3://us-west-2.elasticmapreduce/samples/hive-ads/tables/impressions).

CREATE EXTERNAL TABLE impressions ( requestbegintime string, adid string, impressionid string, referrer string, useragent string, usercookie string, ip string, number string, processid string, browsercookie string, requestendtime string, timers struct < modellookup:string, requesttime:string >, threadid string, hostname string, sessionid string ) PARTITIONED BY (dt string) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' LOCATION 's3://amzn-s3-demo-bucket.elasticmapreduce/samples/hive-ads/tables/impressions';

Spécifiez les formats d'horodatage avec le Hive JSON SerDe

Pour analyser les valeurs de l'horodatage à partir d'une chaîne, vous pouvez ajouter le sous-champ WITH SERDEPROPERTIES à la clause ROW FORMAT SERDE et l'utiliser pour spécifier le paramètre timestamp.formats. Dans le paramètre, spécifiez une liste séparée par des virgules d'un ou plusieurs modèles d'horodatage, comme dans l'exemple suivant :

... ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' WITH SERDEPROPERTIES ("timestamp.formats"="yyyy-MM-dd'T'HH:mm:ss.SSS'Z',yyyy-MM-dd'T'HH:mm:ss") ...

Pour en savoir plus, consultez la rubrique Horodatage dans la documentation Apache Hive.

Charger la table pour effectuer des requêtes

Après avoir créé la table, exécutez MSCK REPAIR TABLE pour charger la table et la rendre interrogeable à partir d'Athena :

MSCK REPAIR TABLE impressions

CloudTrail Journaux de requêtes

Vous pouvez utiliser la Hive JSON SerDe pour interroger les CloudTrail journaux. Pour plus d'informations et des exemples d'instructions CREATE TABLE, voir Requête AWS CloudTrail journaux.