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. 版本
组件 | 版本 |
---|---|
hudi | 10.0 |
flink | 13.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 Java Client总结|读取Hive写Hudi代码示例
Flink 版本数据湖(hudi)实时数仓---flinkcdc hudi kafak hive
Flink 实战系列Flink SQL 实时同步 Kafka 数据到 Hudi(parquet + snappy)并且自动同步数据到 Hive