Comment résoudre l'erreur « L'élément clé fourni ne correspond pas au schéma » lors de l'importation de tables DynamoDB via Hive sur Amazon EMR ?

Dernière mise à jour : 28-10-2020

Lorsque j'essaie d'importer des tables Amazon DynamoDB dans Amazon EMR via Hive, je reçois un message d'erreur comme celui-ci : « 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. Les journaux se trouvent dans le répertoire /mnt/var/log/hive sur le nœud principal du cluster EMR. Vérifiez les journaux semblables à ceci :

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.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?