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.
Le Hive JSON SerDe est couramment utilisé pour traiter des données JSON comme des événements. Ces événements sont représentés sous forme de chaînes sur une ligne de texte codées en JSON et séparées par une nouvelle ligne. Le JSON Hive n' SerDe autorise pas la duplication de clés map
ou de noms de struct
clés.
Note
Il SerDe s'attend à ce que chaque document JSON se trouve sur une seule ligne de texte sans aucun caractère de fin de ligne séparant les champs de l'enregistrement. Si le texte JSON est dans un joli format d'impression, vous pouvez recevoir un message d'erreur tel que HIVE_CURSOR_ERROR : Row is not a valid JSON Object
ou HIVE_CURSOR_ERROR : : Unexpected JsonParseException end-of-input : expected close marker for OBJECT
lorsque vous essayez d'interroger la table après l'avoir créée. Pour plus d'informations, consultez la section Fichiers de données JSON
L'exemple d'instruction DDL suivant utilise le code JSON Hive SerDe pour créer un tableau basé sur des exemples de données publicitaires en ligne. Dans la LOCATION
clause, remplacez le myregion
in s3://amzn-s3-demo-bucket.elasticmapreduce/samples/hive-ads/tables/impressions
par 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
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 le JSON Hive SerDe pour interroger les CloudTrail journaux. Pour plus d'informations et des exemples d'instructions CREATE TABLE
, voir AWS CloudTrail Journaux de requêtes.