java - Hive - DynamoDB 导出在欧洲不起作用?

标签 java amazon-web-services hadoop hive amazon-dynamodb

在欧盟地区使用 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/

相关文章:

python - 使用 gunicorn 作为 wsgi 服务器记录对 flask 服务器的请求...到 AWS cloudwatch

hadoop - 如何在 Hadoop/PIG 中处理非 ASCII/亚洲/中文字符

java - 与学校的封闭端口联网

amazon-web-services - 为什么某些 AWS 服务要求请求者拥有 IAM 策略?

java - Stripes 异常处理程序错误

python-3.x - Cloudformation 的 AWS lambda 代码部署问题

java - 如何知道reducer已经完成了它的任务

mysql - 如何使用Sqoop连接到namenode上MySQL上的特定端口?

java - 了解andThen()函数

java - 在 shell 脚本中调用连续的 java 任务