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