Comment résoudre l'erreur « Provided key element doesn’t match the schema » (L'élément de clé fourni ne correspond pas au schéma) qui s'affiche lorsque j'utilise Hive sur Amazon EMR pour importer des tables DynamoDB ?

Lecture de 2 minute(s)
0

Lorsque j'utilise Apache Hive pour importer des tables Amazon DynamoDB dans Amazon EMR, le message d'erreur « Provided key element doesn’t match the schema » (L'élément de clé fourni ne correspond pas au schéma) s'affiche.

Résolution

Lorsque vous avez un schéma incorrect, des données corrompues ou des données incompatibles, le message d'erreur suivant peut s'afficher :

« The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: #ABC###########) » (L'élément de clé fourni ne correspond pas au schéma (Service : AmazonDynamoDBv2 ; Code de statut : 400 ; Code d’erreur : ValidationException ; ID de requête : #ABC ############)

Si le schéma incorrect, les données corrompues ou les données incompatibles ne sont pas à l'origine de l'erreur, consultez les journaux d'application Hive. Pour trouver les journaux d'application Hive, connectez-vous au nœud primaire du cluster Amazon EMR et accédez au répertoire /mnt/var/log/hive.

Si vous avez activé la journalisation, vous pouvez trouver les journaux dans Amazon Simple Storage Service (Amazon S3). Utilisez un chemin similaire à s3://log-location/cluster-id/node/primary-instance-id/applications/hive.

Exemples de journaux :

Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"countryasin":"LOCATION '${INPUT}';","hts_type":null,"hts_code":null}
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:565)
at org.apache.hadoop.hive.ql.exec.tez.MapRecordSource.processRow(MapRecordSource.java:86)
... 17 more
Caused by: java.lang.RuntimeException: com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: 0FF3KB36M2SJD8E79BUPOUP943VV4KQNSO5AEMVJF66Q9ASUAAJG)

La ligne figurant dans le message d'erreur, {"countryasin":"LOCATION '${INPUT}';","hts_type":null,"hts_code":null} fait partie du script Hive. Ce script Hive se trouve au même emplacement Amazon S3 que les fichiers d'entrée. La tâche d'importation envoie le script Hive à la table DynamoDB sous forme de données et l'utilise dans la tâche d'importation. Pour résoudre ce problème, déplacez le script Hive vers un autre emplacement Amazon S3.

Informations connexes

Afficher les fichiers journaux Amazon EMR

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 3 mois