Hudi同步Hive表报“Cannot create hive connection jdbc:hive2://localhost:10000/”错误的解决方法

让Hudi自动同步元数据到Hive Metastore,我们需要对Hudi进行一些必要的配置,根据官方文档( https://hudi.apache.org/docs/configurations.html#hive-sync-options )给出的说明,标准的Hudi Hive Sync配置应该是这样的:

首先是最基本的三项:

DataSourceWriteOptions.HIVE_SYNC_ENABLED_OPT_KEY -> "true"
DataSourceWriteOptions.HIVE_DATABASE_OPT_KEY -> "your-target-database"
DataSourceWriteOptions.HIVE_TABLE_OPT_KEY -> "your-target-table"

这三项很容易理解,就是告诉Hudi要开启Hive Sync,同时指定同步到Hive的什么库的什么表。

此外,对于分区表需要追加以下几项:

DataSourceWriteOptions.KEYGENERATOR_CLASS_OPT_KEY -> classOf[ComplexKeyGenerator].getName
DataSourceWriteOptions.HIVE_PARTITION_EXTRACTOR_CLASS_OPT_KEY -> classOf[MultiPartKeysValueExtractor].getName
DataSourceWriteOptions.HIVE_STYLE_PARTITIONING_OPT_KEY -> "true"
DataSourceWriteOptions.PARTITIONPATH_FIELD_OPT_KEY -> "your-partition-path-field"
DataSourceWriteOptions.HIVE_PARTITION_FIELDS_OPT_KEY -> "your-hive-partition-field"

对于非分区表需要追加以下几项:

DataSourceWriteOptions.KEYGENERATOR_CLASS_OPT_KEY -> classOf[NonpartitionedKeyGenerator].getName
DataSourceWriteOptions.HIVE_PARTITION_EXTRACTOR_CLASS_OPT_KEY -> classOf[NonPartitionedExtractor].getName

在常规Hadoop/Spark集群上,完成上述配置之后Hudi Hive Sync就可以正常工作了,但是有时你可能会遇到这样一个错误:

Cannot create hive connection jdbc:hive2://localhost:10000/

原因Hudi的Hive Sync默认是通过JDBC连接HiveServer2执行建表操作的,而jdbc:hive2://localhost:10000/是默认的Hive JDBC连接字符串。

当你的HiveServer2地址不是localhost,或者端口不是10000时,就会报出这个错误!修复的方法也很简单,就是将配置项hive_sync.jdbc_urlDataSourceWriteOptions.HIVE_URL_OPT_KEY)改为你环境下的正确的服务器地址和端口。

当然,你也可以尝试另一种方式,直接禁用JDBC,例如在Glue环境下,是没有HiverServer2的,所以必须disable,即,在Hudi中添加如下配置:

DataSourceWriteOptions.HIVE_USE_JDBC_OPT_KEY -> "false"

关于Glue和Hudi有集成,请移步:AWS Glue集成Apache Hudi同步元数据深度历险(各类错误的填坑方案)


推荐:博主历时三年倾注大量心血创作的《大数据平台架构与原型实现:数据中台建设实战》一书已由知名IT图书品牌电子工业出版社博文视点出版发行,真诚推荐给每一位读者!点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,扫码进入京东手机购书页面!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Laurence 

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值