成语大全网 - 汉语词典 - Hudi Hive sync 使用

Hudi Hive sync 使用

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 标签中加入:

然后重新编译。

参考链接:

/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