gpt4 book ai didi

hadoop - 无法使用jdbcStorageHandler创建Hive外部表

转载 作者:行者123 更新时间:2023-12-02 18:34:38 26 4
gpt4 key购买 nike

我正在Amazon EMR中运行一个小型集群,以便与Apache Hive 2.3.5一起玩。据我了解,Apache Hive可以从远程数据库导入数据,并使群集运行查询。我正在遵循Apache Hive Web文档(https://cwiki.apache.org/confluence/display/Hive/JdbcStorageHandler)中提供的示例,并创建了以下代码:

CREATE EXTERNAL TABLE hive_table
(
col1 int,
col2 string,
col3 date
)
STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler'
TBLPROPERTIES (
'hive.sql.database.type'='POSTGRES',
'hive.sql.jdbc.driver'='org.postgresql.Driver',
'hive.sql.jdbc.url'='jdbc:postgresql://<url>/<dbname>',
'hive.sql.dbcp.username'='<username>',
'hive.sql.dbcp.password'='<password>',
'hive.sql.table'='<dbtable>',
'hive.sql.dbcp.maxActive'='1'
);

但是我收到以下错误:
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: MetaException(message:org.apache.hadoop.hive.serde2.SerDeException java.lang.IllegalArgumentException: Property hive.sql.query is required.)

根据文档,我需要指定“hive.sql.table”或“hive.sql.query”来告诉如何从jdbc数据库获取数据。但是,如果我将hive.sql.table替换为hive.sql.query,则会出现以下错误:
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: MetaException(message:org.apache.hadoop.hive.serde2.SerDeException java.lang.IllegalArgumentException: No enum constant org.apache.hive.storage.jdbc.conf.DatabaseType.POSTGRES)

我尝试在网上寻找解决方案,但似乎没有人遇到与我同样的问题。我需要修改配置文件还是我的代码中缺少一些重要内容?

最佳答案

我认为您使用的是不支持POSTGRES的jar版本。

  • 从此链接下载最新的jar:
    http://repo1.maven.org/maven2/org/apache/hive/hive-jdbc-handler/3.1.2/hive-jdbc-handler-3.1.2.jar
  • 将此下载的jar放入hdfs位置。
  • 正常运行配置单元。
  • 运行命令:添加jar $ {HDFS_PATH_TO_DOWNLOADED_JAR}
  • 运行您的创建表命令
  • 关于hadoop - 无法使用jdbcStorageHandler创建Hive外部表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58107669/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com