スキップしてコンテンツを表示

Amazon EMR で、Hive を使用して DynamoDB テーブルをインポートする際に「Provided key element doesn’t match the schema」というエラーが発生する場合の解決方法を教えてください。

所要時間1分
0

Apache Hive を使用して Amazon DynamoDB テーブルを Amazon EMR にインポートすると、「Provided key element doesn’t match the schema」というエラーが表示されます。

解決策

スキーマに誤りがあるか、データが破損しているか、データに不一致がある場合、次のエラーが発生する可能性があります。

「The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: #ABC###########) (指定したキー要素がスキーマと一致しません)」

エラーの原因が、スキーマの誤り、データの破損、データの不一致ではなかった場合は、Hive アプリケーションログを確認してください。Hive アプリケーションログは、Amazon EMR クラスターのプライマリノードに接続し、/mnt/var/log/hive ディレクトリに移動すると確認できます。

ログ記録を有効化済みの場合は、Amazon Simple Storage Service (Amazon S3) でログを確認できます。パスには、s3://log-location/cluster-id/node/primary-instance-id/applications/hive のような形式を使用してください。

ログの例

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)

エラーメッセージ内の行 s3://log-location/cluster-id/node/primary-instance-id/applications/hive は Hive スクリプトの一部です。この Hive スクリプトは、入力ファイルと同じ Amazon S3 の場所にあります。インポートジョブは Hive スクリプトをデータとして DynamoDB テーブルに送信し、インポートジョブで使用します。この問題を解決するには、Hive スクリプトを別の Amazon S3 の場所に移動します。

関連情報

Amazon EMR ログファイルを確認する

AWS公式更新しました 10ヶ月前
コメントはありません

関連するコンテンツ