我在使用 Hive 尝试将 Amazon DynamoDB 表导入到 Amazon EMR 中时,收到类似下面这样的错误:

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

这是一个 400 错误,意味着常见的原因是 schema 错误、数据损坏、数据不匹配等。请确保请求映射模板结构与 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 表中,同时在导入任务中使用该脚本。要解决此问题,请将 Hive 脚本移动到 Amazon S3 中的其他位置。


此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助?访问 AWS 支持中心

发布时间:2018 年 7 月 17 日