如何解决在 Amazon EMR 上使用 Hive 导入 DynamoDB 表时出现的错误“The provided key element does not match the schema”?

上次更新日期:2020 年 10 月 28 日

我在尝试使用 Hive 将 Amazon DynamoDB 表导入到 Amazon EMR 时,收到错误消息“The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code.”

解决方法

模式错误、数据损坏或数据不匹配时,通常会发生此错误。如果在排除这些常见原因后仍收到此错误消息,请检查 Hive 应用程序日志。该日志位于 Amazon 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)

The row that's mentioned in the error message ({"countryasin":"LOCATION '${INPUT}';","hts_type":null,"hts_code":null}) is part of the Hive script.此 Hive 脚本与输入文件位于 Amazon Simple Storage Service (Amazon S3) 的同一位置。导入任务将 Hive 脚本作为数据发送到 DynamoDB 表中,同时在导入任务中使用该脚本。要解决此问题,请将 Hive 脚本移至 Amazon S3 中的其他位置。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?