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 ?

Date de la dernière mise à jour : 15/02/2021

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. Les journaux se trouvent dans le répertoire /mnt/var/log/hive sur le nœud principal du cluster EMR. Vous pouvez vous connecter au nœud maître, puis rechercher des journaux tels que les suivants :

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 ?