Come posso risolvere l'errore "The provided key element does not match the schema" durante l'importazione di tabelle DynamoDB utilizzando Hive su Amazon EMR?

2 minuti di lettura
0

Quando provo a importare tabelle Amazon DynamoDB in Amazon EMR utilizzando Hive, ricevo l'errore "The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code."

Risoluzione

Questo errore si verifica, in genere, quando si dispone di uno schema errato di dati danneggiati o di dati non corrispondenti. Se dopo aver escluso le cause comuni, ricevi ancora il messaggio di errore, allora controlla i log dell'applicazione Hive. Se hai attivato la registrazione, puoi trovare i log su Amazon Simple Storage Service (Amazon S3) in una posizione simile a questa:

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

Altrimenti, puoi trovare i log nella directory /mnt/var/log/hive sul nodo principale del cluster EMR. È possibile connettersi al nodo principale e quindi verificare la presenza di log. I log hanno un aspetto simile a come segue:

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 riga menzionata nel messaggio di errore ({"countryasin":"LOCATION '${INPUT}';","hts_type":null,"hts_code":null}) fa parte dello script Hive. Questo script Hive si trova nella stessa posizione di Amazon Simple Storage Service (Amazon S3) dei file di input. Il processo di importazione consiste nell'invio dello script Hive alla tabella DynamoDB come dati e nell'utilizzo nel processo di importazione. Per risolvere questo problema, sposta lo script Hive in una posizione Amazon S3 diversa.


Informazioni correlate

Ottimizzazione delle prestazioni per le operazioni di Amazon EMR in DynamoDB

Classe DynamoDBMapper

Visualizza i file di log

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa