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