在欧盟地区使用 Hive & DynamoDB 时出现问题。
我的测试用例是:
- Hive 版本 - 2.3.0 eu-central-1
- Dynamodb 表 - test_input eu-central-1
hive 脚本:
CREATE EXTERNAL TABLE raw_data (id STRING, parent_id STRING, value STRING)
STORED BY "org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler"
TBLPROPERTIES (
"dynamodb.table.name" = "test_input",
"dynamodb.region"="eu-central-1",
"dynamodb.column.mapping" = "id:id,value:value,parent_id:parent_id"
);
运行脚本后我得到:
失败:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。 java.lang.RuntimeException:无法在 DynamoDB 中查找表 test_input。
根据旧胎面https://forums.aws.amazon.com/thread.jspa?messageID=326618 ,我尝试了很多步骤来解决它。 添加后: 设置 dynamodb.endpoint=dynamodb.eu-central-1.amazonaws.com。 同样的错误。
我也试过添加:
<property>
<name>dynamodb.endpoint</name>
<value>dynamodb.eu-central-1.amazonaws.com</value>
<description>DynamoDB endpoint</description>
</property>
到/etc/hive/conf/hive-default.xml 和/etc/hive/conf/hive-site.xml。仍然有相同的结果。 我在互联网上搜索没有成功找到解决方案:(
有什么解决办法吗?
最佳答案
通过添加到/etc/hadoop/conf/core-site.xml 解决:
<property>
<name>fs.s3.awsAccessKeyId</name>
<value>Key</value>
</property>
<property>
<name>fs.s3.awsSecretAccessKey</name>
<value>Secret</value>
</property>
只有这个是必需的,EMR 使用这个帐户而不是角色。
关于java - Hive - DynamoDB 导出在欧洲不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46037325/