Direkt zum Inhalt

Wie behebe ich den Fehler „Provided key element doesn’t match the schema“, den ich erhalte, wenn ich Hive auf Amazon EMR zum Importieren von DynamoDB-Tabellen verwende?

Lesedauer: 2 Minute
0

Wenn ich Apache Hive verwende, um Amazon DynamoDB-Tabellen in Amazon EMR zu importieren, erhalte ich die Fehlermeldung „Provided key element doesn’t match the schema“.

Lösung

Wenn du ein falsches Schema, beschädigte Daten oder nicht übereinstimmende Daten hast, wird möglicherweise die folgende Fehlermeldung angezeigt:

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

Wenn ein falsches Schema, beschädigte Daten oder nicht übereinstimmende Daten den Fehler nicht verursacht haben, überprüfe die Hive-Anwendungsprotokolle. Um die Hive-Anwendungsprotokolle zu finden, stelle eine Verbindung zum Primärknoten des Amazon EMR-Clusters her und navigiere zum Verzeichnis /mnt/var/log/hive.

Wenn du die Protokollierung aktiviert hast, finde die Protokolle in Amazon Simple Storage Service (Amazon S3). Verwende einen Pfad, der s3://log-location/cluster-id/node/primary-instance-id/applications/hive ähnelt.

Beispielprotokolle:

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)

Die Zeile in der Fehlermeldung {"countryasin":"LOCATION '${INPUT}';","hts_type":null,"hts_code":null} ist Teil des Hive-Skripts. Dieses Hive-Skript befindet sich am selben Amazon S3-Speicherort wie die Eingabedateien. Der Importauftrag sendet das Hive-Skript als Daten an die DynamoDB-Tabelle und verwendet es im Importauftrag. Um dieses Problem zu beheben, verschiebe das Hive-Skript an einen anderen Amazon S3-Speicherort.

Ähnliche Informationen

Amazon EMR-Protokolldateien anzeigen

AWS OFFICIALAktualisiert vor 10 Monaten