Como resolvo o erro “The provided key element does not match the schema” ao importar tabelas do DynamoDB usando o Hive no Amazon EMR?

2 minuto de leitura
0

Quando tento importar tabelas do Amazon DynamoDB para o Amazon EMR usando o Hive, recebo o erro “The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code."

Resolução

Esse erro geralmente ocorre quando você tem um esquema incorreto, dados corrompidos ou dados incompatíveis. Se você ainda receber a mensagem de erro depois de descartar essas causas comuns, verifique os logs do aplicativo Hive. Se você ativou o registro de logs, poderá encontrar os logs no Amazon Simple Storage Service (Amazon S3) no local semelhante a este:

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

Caso contrário, você pode encontrar os logs no diretório /mnt/var/log/hive no nó principal do cluster do EMR. Você pode se conectar ao nó principal e, em seguida, verificar se há registros. Os registros são semelhantes aos seguintes:

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)

A linha mencionada na mensagem de erro ({"countryasin":"LOCATION '${INPUT}';","hts_type":null,"hts_code":null}) faz parte do script do Hive. Esse script do Hive está no mesmo local do Amazon Simple Storage Service (Amazon S3) dos arquivos de entrada. O trabalho de importação está enviando o script do Hive para a tabela do DynamoDB como dados, além de usá-lo no trabalho de importação. Para resolver esse problema, mova o script do Hive para um local diferente do Amazon S3.


Informações relacionadas

Otimizar o desempenho das operações do Amazon EMR no DynamoDB

Classe DynamoDBMapper

Exibir arquivos de log

AWS OFICIAL
AWS OFICIALAtualizada há um ano