Ir para o conteúdo

Como resolvo o erro “Provided key element doesn’t match the schema” que recebo quando uso o Hive no Amazon EMR para importar tabelas do DynamoDB?

2 minuto de leitura
0

Quando uso o Apache Hive para importar tabelas do Amazon DynamoDB para o Amazon EMR, recebo o erro “Provided key element doesn’t match the schema” (O elemento-chave fornecido não corresponde ao esquema).

Resolução

Quando você tem um esquema incorreto, dados corrompidos ou dados incompatíveis, você pode receber o seguinte erro:

“The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: #ABC###########)”

Se um esquema incorreto, dados corrompidos ou dados incompatíveis não causaram o erro, verifique os logs da aplicação Hive. Para encontrar os logs da aplicação Hive, conecte-se ao nó primário do cluster do Amazon EMR e navegue até o diretório /mnt/var/log/hive.

Se você ativou o registro em log, poderá encontrar os logs no Amazon Simple Storage Service (Amazon S3). Use um caminho semelhante a s3://log-location/cluster-id/node/primary-instance-id/applications/hive.

Exemplos de logs:

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 S3 dos arquivos de entrada. O trabalho de importação envia o script do Hive para a tabela do DynamoDB como dados e o usa no trabalho de importação. Para resolver esse problema, mova o script do Hive para um local diferente do Amazon S3.

Informações relacionadas

Exibir arquivos de log do Amazon EMR

AWS OFICIALAtualizada há 10 meses