当前位置: 首页 > 知识库问答 >
问题:

如何在Hive 3.1上创建DynamoDB外部表

郑松
2023-03-14

我想知道是否有可能使用Hive在AWS上有一个指向DynamoDB表的外部表。我没有使用AWS EMR,我使用的是通过Apache Ambari配置的Hadoop Stack。

配置单元版本:配置单元3.1.0.3.1.4.0-315

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

我把所有的罐子都装在hive.aux.jars.path:

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加载填隙片罐,但我想知道你们中是否有人尝试并成功地在EMR之外使用Hive 3的DynamoDB外部表。

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

共有1个答案

牟慎之
2023-03-14

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

但是,您可以在这里找到一个工作正常的3.1实现,它来自官方的EMR连接器:https://github.com/ramsesrm/emr-dynamodb-connector

安装步骤如下:1-编译上述代码(mvn clean package)2-在您的蜂箱中安装3个JAR。辅助的。罐。path,以及aws的aws java sdk core和aws java sdk dynamodb JAR(不需要垫片JAR),共5个。

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

 类似资料:
  • 我在Windows7上本地安装DynamoDB。我的项目是一个Node.js(0.12.0),我使用AWS-SDK。

  • 我目前使用Amazon/Dynamodb-local映像在Docker容器中运行Dynamodb-local。 容器启动,我可以通过AWS CLI手动创建必要的表。 然而,在这一点上,我需要在容器初始启动时创建表。 如果我使用dockerfile,我认为我需要创建一个具有以下内容的映像:-Python(用于使用PIP安装AWS CLI)-PIP-AWS CLI-DynamoDB Local 我还可

  • 样式表的作用是控制网页样式,只有创建样式表,并把它应用到网页中,才能发挥样式表的作用。 创建外部样式表 外部样式表,是在网页外部的样式表文件中定义的样式。由于这些样式并不是HTML文档的一部分,而是在HTML文档的外部独立存在,故称外部样式表。 样式表文件是纯文本文件,可以使用任何文本编辑器来编辑,这里使用Windows自带的记事本,来创建外部样式表。步骤如下: 1)在Windows系统中,点击开

  • 我们可以从AWS控制台创建、编辑、删除组来维护DynamoDb表的逻辑分组。我搜索了AWS文档和论坛,但没有找到如何使用CloudFormation创建DynamoDb表组的方法,也没有找到如何使用AWS.NET SDK在组内创建表的方法。这可能吗?

  • 我是azure databricks的新手,正在尝试创建一个外部表,指向Azure Data Lake Storage(ADLS)Gen-2位置。 我尝试从数据库笔记本设置ADLS访问的火花配置。我仍然无法执行创建的DDL。 注意:一个适合我的解决方案是将ADLS帐户装载到集群,然后使用外部表的DDL中的装载位置。但我需要检查是否可以使用ADLS路径创建一个外部表DDL,而无需安装位置。 数据链路

  • 我想像这样用resideMenu创建一个应用程序。怎么做?或者有什么有用的库可以帮助实现它?谢谢!