Comment résoudre l'erreur « The provided key element does not match the schema » (L'élément clé fourni ne correspond pas au schéma) lors de l'importation de tables DynamoDB via Hive sur Amazon EMR ?

Lecture de 2 minute(s)
0

Lorsque j'essaie d'importer des tables Amazon DynamoDB dans Amazon EMR via Hive, je reçois l'erreur suivante : « The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code » (L'élément clé fourni ne correspond pas au schéma (Service : AmazonDynamoDBv2 ; Code d'état : 400 ; Code d'erreur).

Résolution

Cette erreur se produit généralement lorsque vous avez un schéma incorrect, des données corrompues ou non appariées. Si le message d'erreur s'affiche toujours après que vous ayez éliminé ces causes courantes, vérifiez les journaux de l'application Hive. Si vous avez activé la journalisation, vous pouvez trouver les journaux sur Amazon Simple Storage Service (Amazon S3) à l'emplacement qui ressemble à ce qui suit :

s3://example-log-location/example-cluster-id/node/example-ec2-master-instance-id/applications/hive

Sinon, vous pouvez trouver ces journaux dans le répertoire /mnt/var/log/hive sur le nœud principal du cluster EMR. Vous pouvez vous connecter au nœud principal, puis rechercher des journaux. Les journaux ressemblent à ce qui suit :

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 mentionnée dans le message d'erreur ({"countryasin":"LOCATION '${INPUT}';","hts_type":null,"hts_code":null}) fait partie du script Hive. Ce script Hive se trouve dans le même emplacement d'Amazon Simple Storage Service (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, placez le script Hive dans un emplacement différent d'Amazon S3.


Informations connexes

Optimisation des performances pour les opérations Amazon EMR dans DynamoDB

Classe DynamoDBMapper

Afficher les fichiers journaux

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an
Aucun commentaire