【发布时间】: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