Cuando intento importar tablas de Amazon DynamoDB a Amazon EMR mediante Hive, se muestra el error «El elemento clave proporcionado no coincide con el esquema (servicio: AmazonDynamoDBv2; código de estado: 400; código de error.»
Resolución
Este error se suele producir cuando hay un esquema incorrecto, datos dañados o discrepancias en los datos. Si el error persiste después de haber descartado estas causas habituales, consulte los registros de la aplicación Hive. Si ha activado los registros, en Amazon Simple Storage Service (Amazon S3) los encontrará en una ubicación parecida a la siguiente:
s3://example-log-location/example-cluster-id/node/example-ec2-master-instance-id/applications/hive
Si no lo ha hecho, encontrará los registros en el directorio /mnt/var/log/hive del nodo maestro del clúster de EMR. Puede conectarse al nodo maestro y luego consultar si hay registros. Los registros tienen un aspecto similar al siguiente:
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 fila mencionada en el mensaje de error ({"countryasin":"LOCATION '${INPUT}';","hts_type":null,"hts_code":null}) forma parte del script de Hive. Este script de Hive se encuentra en la misma ubicación de Amazon Simple Storage Service (Amazon S3) que los archivos de entrada. El trabajo de importación utiliza el script de Hive y, además, lo envía a la tabla de DynamoDB en forma de datos. Para solucionar este problema, mueva el script de Hive a otra ubicación de Amazon S3.
Información relacionada
Optimización del rendimiento de las operaciones de Amazon EMR en DynamoDB
Clase DynamoDBMapper
Visualización de los archivos de registro