Hudi Hive sync 使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hudi Hive sync 使用相关的知识,希望对你有一定的参考价值。

参考技术A Spark/Flink可以使用Hive的metastore,但是Hive无法通过Hive metastore中的Spark/Flink表直接查询数据。为了解决这个问题,可以配置使用Hive sync。在Spark/Flink操作表的时候,自动同步Hive的元数据。这样就可以通过Hive查询Hudi表的内容。

Hive metastore通过目录结构的来维护元数据,数据的更新是通过覆盖来保证事务。但是数据湖是通过追踪文件来管理元数据,一个目录中可以包含多个版本的文件。这一点和Hive元数据管理是不同的。所以说为了兼容Hive metastore,Hudi需要实时从Timeline同步元数据到Hive metastore。

复制编译后的 packaging/hudi-hadoop-mr-bundle/target/hudi-hadoop-mr-bundle-0.11.1.jar 到各节点Hive安装目录的 auxlib 目录中。

进入 beeline 后执行:

如果要使用Hive Sync功能,编译时候需要激活 flink-bundle-shade-hive3 profile。编译命令如下所示:

Flink Hive Sync支持两种模式连接Hive:

两种使用方式如下所示:

例如使用HMS方式配置Hive Sync:

然后我们进入beeline,执行:

我们可以看到同步过来的 t1 表。

然后执行:

可以从Hive中查出Hudi表数据。

如果执行Flink的时候遇到如下错误:

需要修改 packaging/hudi-flink-bundle/pom.xml ,在 relocations 标签中加入:

然后重新编译。

参考链接:
https://github.com/apache/hudi/issues/3042

Spark Hive Sync目前只支持DataFrame API。下面使用官网的例子插入数据到 hudi_cow 表:

Spark Hudi Hive Sync配置项含义如下:

和Flink一样,执行成功后可以使用Hive通过 beeline 查询Hudi表数据。

https://hudi.apache.org/docs/syncing_metastore

flink13.5整合hudi10

1. 版本

组件版本
hudi10.0
flink13.5

2.hudi 源码下载

https://github.com/apache/hudi/releases

2.1 需要改flink 版本为13.5

根目录下面的pom 文件

<flink.version>1.13.5</flink.version>
<hive.version>3.1.0</hive.version>
<hadoop.version>3.1.1</hadoop.version>
 

2.2 编译命令

mvn clean package -DskipTests
# 或者指定scala 版本
 
#编译后的包
包的路径在packaging/hudi-flink-bundle/target/hudi-flink-bundle_2.12-*.*.*-SNAPSHOT.jar

2.3编译遇到一个错误

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Hudi 0.10.0:
[INFO] 
[INFO] Hudi ............................................... SUCCESS [  1.642 s]
[INFO] hudi-common ........................................ SUCCESS [  9.808 s]
[INFO] hudi-aws ........................................... SUCCESS [  1.306 s]
[INFO] hudi-timeline-service .............................. SUCCESS [  1.623 s]
[INFO] hudi-client ........................................ SUCCESS [  0.082 s]
[INFO] hudi-client-common ................................. SUCCESS [  8.027 s]
[INFO] hudi-hadoop-mr ..................................... SUCCESS [  2.825 s]
[INFO] hudi-spark-client .................................. SUCCESS [ 13.891 s]
[INFO] hudi-sync-common ................................... SUCCESS [  0.718 s]
[INFO] hudi-hive-sync ..................................... SUCCESS [  3.027 s]
[INFO] hudi-spark-datasource .............................. SUCCESS [  0.066 s]
[INFO] hudi-spark-common_2.12 ............................. SUCCESS [  7.706 s]
[INFO] hudi-spark2_2.12 ................................... SUCCESS [  9.535 s]
[INFO] hudi-spark_2.12 .................................... SUCCESS [ 25.923 s]
[INFO] hudi-utilities_2.12 ................................ FAILURE [  2.638 s]
[INFO] hudi-utilities-bundle_2.12 ......................... SKIPPED
[INFO] hudi-cli ........................................... SKIPPED
[INFO] hudi-java-client ................................... SKIPPED
[INFO] hudi-flink-client .................................. SKIPPED
[INFO] hudi-spark3_2.12 ................................... SKIPPED
[INFO] hudi-dla-sync ...................................... SKIPPED
[INFO] hudi-sync .......................................... SKIPPED
[INFO] hudi-hadoop-mr-bundle .............................. SKIPPED
[INFO] hudi-hive-sync-bundle .............................. SKIPPED
[INFO] hudi-spark-bundle_2.12 ............................. SKIPPED
[INFO] hudi-presto-bundle ................................. SKIPPED
[INFO] hudi-timeline-server-bundle ........................ SKIPPED
[INFO] hudi-hadoop-docker ................................. SKIPPED
[INFO] hudi-hadoop-base-docker ............................ SKIPPED
[INFO] hudi-hadoop-namenode-docker ........................ SKIPPED
[INFO] hudi-hadoop-datanode-docker ........................ SKIPPED
[INFO] hudi-hadoop-history-docker ......................... SKIPPED
[INFO] hudi-hadoop-hive-docker ............................ SKIPPED
[INFO] hudi-hadoop-sparkbase-docker ....................... SKIPPED
[INFO] hudi-hadoop-sparkmaster-docker ..................... SKIPPED
[INFO] hudi-hadoop-sparkworker-docker ..................... SKIPPED
[INFO] hudi-hadoop-sparkadhoc-docker ...................... SKIPPED
[INFO] hudi-hadoop-presto-docker .......................... SKIPPED
[INFO] hudi-integ-test .................................... SKIPPED
[INFO] hudi-integ-test-bundle ...................

以上是关于Hudi Hive sync 使用的主要内容,如果未能解决你的问题,请参考以下文章

hudi使用cow生成parquet格式用hive查询的问题

hudi hive区别

Hudi Java Client总结|读取Hive写Hudi代码示例

数据湖:Hudi与Hive集成

Flink 版本数据湖(hudi)实时数仓---flinkcdc hudi kafak hive

Flink 实战系列Flink SQL 实时同步 Kafka 数据到 Hudi(parquet + snappy)并且自动同步数据到 Hive