更新时间:2022-12-13 GMT+08:00

使用Hudi-Cli.sh操作Hudi表

前提条件

  • 对于开启了Kerberos认证的安全模式集群,已在集群FusionInsight Manager界面创建一个用户并关联“hadoop”和“hive”用户组。
  • 已下载并安装Hudi集群客户端。

基础操作

  1. 使用root用户登录集群客户端节点,执行如下命令:

    cd {客户端安装目录}

    source bigdata_env

    source Hudi/component_env

    kinit 创建的用户

  2. 执行hudi-cli.sh进入Hudi客户端,

    cd {客户端安装目录}/Hudi/hudi/bin/

    ./hudi-cli.sh

  3. 即可执行各种Hudi命令,执行示例(仅部分命令,全部命令请参考Hudi官网:https://hudi.apache.org/docs/quick-start-guide/):
    • 查看帮助:

      help //查看hudi-cli的所有命令

      help 'command' //查看某一个命令的帮助及参数列表。

    • 连接表:

      connect --path '/tmp/huditest/test_table'

    • 查看表信息:

      desc

    • 查看compaction计划:

      compactions show all

    • 查看clean计划:

      cleans show

    • 执行clean:

      cleans run

    • 查看commit信息:

      commits show

    • 查看commit写入的分区:

      commit showpartitions --commit 20210127153356

      20210127153356表示commit的时间戳,下同。

    • 查看指定commit写入的文件:

      commit showfiles --commit 20210127153356

    • 比较两个表的commit信息差异:

      commits compare --path /tmp/hudimor/mytest100

    • rollback指定提交(rollback每次只允许rollback最后一次commit):

      commit rollback --commit 20210127164905

    • compaction调度:

      compaction schedule --hoodieConfigs 'hoodie.compaction.strategy=org.apache.hudi.table.action.compact.strategy.BoundedIOCompactionStrategy,hoodie.compaction.target.io=1,hoodie.compact.inline.max.delta.commits=1'

    • 执行compaction

      compaction run --parallelism 100 --sparkMemory 1g --retry 1 --compactionInstant 20210602101315 --hoodieConfigs 'hoodie.compaction.strategy=org.apache.hudi.table.action.compact.strategy.BoundedIOCompactionStrategy,hoodie.compaction.target.io=1,hoodie.compact.inline.max.delta.commits=1' --propsFilePath hdfs://hacluster/tmp/default/tb_test_mor/.hoodie/hoodie.properties --schemaFilePath /tmp/default/tb_test_mor/.hoodie/compact_tb_base.json

    • 创建savepoint

      savepoint create --commit 20210318155750

    • 回滚指定的savepoint

      savepoint rollback --savepoint 20210318155750

      1. 若commit写入导致元数据冲突异常,执行commit rollback、savepoint rollback能回退数据,但不能回退Hive元数据,只能删除Hive表然后手动进行同步刷新。
      2. commit rollback只能回退当前最新的一个commit,savepoint rollback只能回退到最新的一个savepoint。二者均不能随意指定进行回退。