【问题标题】:How to create external table to DynamoDB on Hive 3.1如何在 Hive 3.1 上为 DynamoDB 创建外部表
【发布时间】:2020-04-28 23:08:49
【问题描述】:

我想知道是否可以使用 Hive 让外部表指向 AWS 上的 DynamoDB 表。 我没有使用 AWS EMR,我使用的是通过 Apache Ambari 配置的 Hadoop 堆栈。

Hive 版本:Hive 3.1.0.3.1.4.0-315

我所做的是: 直接从 maven 存储库下载了 EMR Dynamo-Hive 连接器 JARS:https://mvnrepository.com/artifact/com.amazon.emr

我在 hive.aux.jars.path 中加载了所有 JARS:

emr-dynamodb-hadoop-4.12.0.jar
emr-dynamodb-hive-4.12.0.jar
emr-dynamodb-tools-4.12.0.jar
hive1.2-shims-4.12.0.jar
hive1-shims-4.12.0.jar
hive2-shims-4.12.0.jar
hive2-shims-4.15.0.jar
shims-common-4.12.0.jar
shims-loader-4.12.0.jar

但是当我尝试使用以下方法创建表时:

CREATE EXTERNAL TABLE dynamo_LabDynamoHive
    (id double, nome string)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' 
TBLPROPERTIES (
    "dynamodb.table.name" = "LabDynamoHive", 
    "dynamodb.column.mapping" = "id:id,nome:nome"
);

我收到以下错误:

INFO  : Starting task [Stage-0:DDL] in serial mode
ERROR : FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Shim class for Hive version 3.1.1000 does not exist
INFO  : Completed executing command(queryId=hive_20200422142624_6ebabdc8-8942-4025-84a8-411505d20895); Time taken: 0.203 seconds
Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Shim class for Hive version 3.1.1000 does not exist (state=08S01,code=1)

我知道我没有为 Hive 3 加载 Shims JAR,但我想知道你们中是否有人尝试并成功地在 EMR 之外使用 Hive 3 将外部表与 DynamoDB 一起使用。

任何帮助或指导将不胜感激!

【问题讨论】:

    标签: hadoop hive amazon-dynamodb


    【解决方案1】:

    问题显然是这个 EMR 连接器的源代码有些过时,并且缺少 AWS 最近为 EMR 6.0 引入的 Hive 3.x 支持。

    但是,您可以在此处找到有效的 3.1 实现,从官方 EMR 连接器分叉:https://github.com/ramsesrm/emr-dynamodb-connector

    安装步骤如下: 1-编译提到的代码(mvn clean package) 2- 在您的 hive.aux.jars.path 中安装 3 个 JAR,以及 AWS 的 aws-java-sdk-core 和 aws-java-sdk-dynamodb JAR(不需要 shim JAR),总共 5 个。

    就是这样。如果您不使用默认的美国区域,请不要忘记将区域指定为 TBLPROPERTIES。

    【讨论】:

      猜你喜欢
      • 2020-02-13
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 1970-01-01
      相关资源
      最近更新 更多