Amazon EMR で Hive を使用して DynamoDB テーブルをインポートするときに発生する「The provided key element does not match the schema」(指定されたキー要素がスキーマと一致しません) というエラーを解決するにはどうすればよいですか?

所要時間1分
0

Hive を使用して Amazon DynamoDB テーブルを Amazon EMR にインポートしようとすると、「The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code」(指定されたキー要素がスキーマ (サービス: AmazonDynamoDBv2; ステータスコード: 400; エラーコード) というエラーが表示されます。

解決方法

このエラーは一般的に、不正なスキーマ、破損したデータ、一致しないデータがある場合に発生します。これらの一般的な原因を排除した後でもエラーメッセージが表示される場合は、Hive アプリケーションのログを確認してください。ログ記録をオンにすると、次のような場所で Amazon Simple Storage Service (Amazon S3) のログを確認できます。

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

それ以外の場合は、EMR クラスターのマスターノードの /mnt/var/log/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)

{"countryasin":"LOCATION '${INPUT}';","hts_type":null,"hts_code":null} のエラーメッセージで言及されている行は、Hive スクリプトの一部です。この Hive スクリプトは、入力ファイルと同じ Amazon Simple Storage Service (Amazon S3) の場所にあります。Hive スクリプトは、インポートジョブで使用されます。また、データとしてインポートジョブから DynamoDB テーブルに送信されます。この問題を解決するには、Amazon S3 の別の場所に Hive スクリプトを移動します。


関連情報

DynamoDB での Amazon EMR オペレーションのパフォーマンスを最適化する

DynamoDBMapper クラス

ログファイルを表示する

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ