从hive到druid交互时出错

s5a0g9ez  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(653)

我试图从配置单元创建一个druid数据源,并使用表配置单元。
首先,我创建了一个数据库配置单元: database_hive 然后,我在这个数据库中创建了一个表。

CREATE TABLE database_hive.hive_table (
    timemachine int,
    userId String,
    lang String,
    location String,
    name String,
    network String,
    posted String,
    sentiment String,
    text String,
);

第二次,我想用 hive_table 在druid上创建一个新的数据源。

SET hive.druid.broker.address.default = 10.1.123.30:8082; --fake ip for example
SET hive.druid.metadata.username = druid;
SET hive.druid.metadata.password = druidpassword;
SET hive.druid.metadata.db.type = derby;
SET hive.druid.metadata.uri = jdbc:mysql://10.1.123.30:3306/druid?createDatabaseIfNoExist=true;

CREATE TABLE druid_table
STORED BY 'org.apache.hadoop.hive.druid.DruidStorageHandler'
TBLPROPERTIES (
    "druid.segment.granularity" = "MONTH",
    "druid.query.granularity" = "DAY")
    AS
    SELECT
    cast(timemachine as timestamp) as `__time`,   
    cast(userId as string) userId,
    cast(lang as string) lang,
    cast(location as string) location,
    cast(name as string) name,
    cast(network as string) network,
    cast(posted as string) posted,
    cast(sentiment as string) sentiment,
    cast(text as string) text
    FROM hive_table
;

此查询返回一个错误:

Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.skife.jdbi.v2.exceptions.UnableToObtainConnectionException: java.sql.SQLException: Cannot create JDBC driver of class 'org.apache.derby.jdbc.ClientDriver' for connect URL 'jdbc:mysql://10.1.123.30:3306/druid?createDatabaseIfNoExist=true' (state=08S01,code=1)

在我的Hive存储库中,我 mysql-connector-java.jar 所以我不明白问题出在哪里。我试过一些关于其他主题的建议,但没有找到解决办法。有人有建议吗?
谢谢你的帮助!

a7qyws3x

a7qyws3x1#

问题出在您的druid元数据db配置中。配置单元需要访问关系数据库,druid使用该数据库存储所有元数据。可以设置为 derby 在Druid方面,但是德比就像sqlite,所以不能被Hive访问。因此,Hive不允许 derby 作为有效的论据 hive.druid.metadata.db.type 财产。唯一允许的是 mysql 以及 postgresql .
因此,要解决此问题,您需要:
确保您的druid集群使用mysql或psql进行元数据存储
hive.druid.metadata.db.type 到正确的db类型
hive.druid.metadata.uri 更正数据库url

相关问题