Hive を使用して Amazon DynamoDB テーブルを Amazon EMR 内にインポートするときに、次のようなエラーメッセージが表示されます。

The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code

これは 400 エラーです。最も一般的な原因は、不正なスキーマ、破損したデータ、一致しないデータなどです。リクエストマッピングのテンプレート構造が Amazon DynamoDB のキー構造と一致していることを確認してください。詳細については、「不正な DynamoDB キーマッピング」を参照してください。

最も一般的な原因を排除した後でもエラーメッセージが表示される場合は、Hive アプリケーションのログを確認します。ログは、Amazon EMR クラスターのマスターノードの /mnt/var/log/hive ディレクトリにあります。次のようなログを探してください。

2018-02-01 08:17:27,782 [INFO] [TezChild] |s3n.S3NativeFileSystem|: Opening 's3://bucket/folder/ddb_hive.sql' for reading
2018-02-01 08:17:27,817 [INFO] [TezChild] |exec.Utilities|: PLAN PATH = hdfs://ip-172-31-xx-xxx.ec2.internal:8020/tmp/hive/hadoop/e27c0150-663a-4935-ba7c-a321a6b077bd/hive_2018-02-01_08-14-39_999_8671394604140937828-1/hadoop/_tez_scratch_dir/208eda2e-6ec4-40da-a3b0-79db50920ec4/map.xml
2018-02-01 08:17:27,817 [INFO] [TezChild] |lazy.LazyStruct|: Missing fields! Expected 3 fields but only got 2! Ignoring similar problems.

この例の場合、Hive スクリプトは入力ファイルと同じ Amazon Simple Storage Service (Amazon S3) の場所にあります。Hive スクリプトは、インポートジョブで使用されます。また、データとしてインポートジョブから DynamoDB テーブルに送信されます。この問題を解決するには、Amazon S3 の別の場所に Hive スクリプトを移動します。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2018 年 7 月 17 日