¿Cómo puedo solucionar el error «El elemento clave proporcionado no coincide con el esquema» al importar tablas de DynamoDB mediante Hive en Amazon EMR?

2 minutos de lectura
0

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

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año