Hudi系列15:Hudi元数据同步到Hive

一. hive sync tool工具介绍

使用DataSource writer或HoodieDeltaStreamer写入数据支持将表的最新模式同步到Hive metastore,这样查询就可以获得新的列和分区。在这种情况下,最好从命令行或在一个独立的jvm中运行,Hudi提供了一个HiveSyncTool,一旦你构建了Hudi -hive模块,就可以如下所示调用它。以下是我们如何同步上述Datasource Writer写入的表到Hive metastore。

语法:

cd hudi-hive
./run_sync_tool.sh  --jdbc-url jdbc:hive2:\/\/hiveserver:10000 --user hive --pass hive --partitioned-by partition --base-path <basePath> --database default --table <tableName>

二. 问题排查

hudi自身带的 hive sync tool会存在一定的问题,直接运行会报各种各样不同的错误。

修改

vim run_sync_tool.sh
  1. 解决hadoop依赖问题
    注释这两行
    image.png

新增两行
image.png

  1. 解决Parquet冲突
    上传到/home/software目录
wget https://repo.maven.apache.org/maven2/org/apache/parquet/parquet-column/1.12.2/parquet-column-1.12.2.jar

image.png

三. 实操

代码:

cd /home/hudi-0.12.0/hudi-sync/hudi-hive-sync
./run_sync_tool.sh  --jdbc-url jdbc:hive2:\/\/hp5:10000 --base-path hdfs://hp5:8020/tmp/hudi/flink_hudi_mysql_cdc5 --database test --table flink_hudi_mysql_cdc5

运行记录:
image.png

Flink SQL 查看建表语句:

Flink SQL> show create table flink_hudi_mysql_cdc5;
CREATE TABLE `hive_catalog`.`hudidb`.`flink_hudi_mysql_cdc5` (
  `id` BIGINT NOT NULL,
  `name` VARCHAR(100),
  CONSTRAINT `PK_3386` PRIMARY KEY (`id`) NOT ENFORCED
) WITH (
  'write.precombine.field' = 'name',
  'compaction.async.enabled' = 'false',
  'hoodie.datasource.write.recordkey.field' = 'id',
  'path' = 'hdfs://hp5:8020/tmp/hudi/flink_hudi_mysql_cdc5',
  'connector' = 'hudi',
  'changelog.enabled' = 'true',
  'table.type' = 'MERGE_ON_READ'
)

Hive端查看建表语句:
image.png

image.png

MySQL 端持续插入数据:

DELIMITER //

CREATE PROCEDURE p5()
BEGIN
  
  declare l_n1 int default 21;
 
  
  while l_n1 <= 10000000 DO  
     insert into mysql_cdc (id,name) values (l_n1,concat('test',l_n1));
     set l_n1 = l_n1 + 1;
  end while;
  

END;
//

DELIMITER ;

参考:

  1. https://hudi.apache.org/docs/0.12.0/syncing_metastore
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值