01 hudi 1.0.1源码编译(常见问题处理)


 

1. hudi命令大全

1.1. 命令大全

注意:各个命令详细参数可以查看org.apache.hudi.cli.commands对应的class

归档提交命令

  • trigger archival: 触发归档
  • show archived commits: 从归档文件读取提交并显示详情
  • show archived commit stats: 从归档文件读取提交并显示文件组详情

引导命令

  • bootstrap run: 为当前 Hudi 表运行引导操作
  • bootstrap index showmapping: 显示引导索引映射
  • bootstrap index showpartitions: 显示引导索引分区

内置命令

  • help: 显示可用命令的帮助信息
  • stacktrace: 显示上一个错误的完整堆栈跟踪
  • clear: 清除Shell屏幕
  • quit, exit: 退出Shell
  • history: 显示或保存之前运行的命令历史
  • version: 显示版本信息
  • script: 从文件中读取并执行命令

清理命令

  • cleans show: 显示清理记录
  • clean showpartitions: 显示清理的分区级别详情
  • cleans run: 运行清理

聚类命令

  • clustering run: 运行聚类
  • clustering scheduleAndExecute: 运行聚类。首先制定一个集群计划并立即执行该计划
  • clustering schedule: 调度聚类

提交命令

  • commits compare: 与另一个 Hoodie 表比较提交
  • commits sync: 与另一个 Hoodie 表同步提交
  • commit showpartitions: 显示提交的分区级别详情
  • commits show: 显示提交
  • commits showarchived: 显示归档的提交
  • commit showfiles: 显示提交的文件级别详情
  • commit show_write_stats: 显示提交的写入统计信息

压缩命令

  • compaction run: 为给定的时刻运行压缩
  • compaction showarchived: 显示特定压缩时刻的详细信息
  • compaction scheduleAndExecute: 调度压缩计划并执行该计划
  • compaction repair: 重命名文件以使其与Hoodie元数据所要求的时间线一致。用于当压缩未调度失败部分时。
  • compaction schedule: 调度压缩
  • compaction show: 显示特定压缩时刻的详细信息
  • compaction unscheduleFileId: 取消调度某个文件ID的压缩
  • compaction validate: 验证压缩
  • compaction unschedule: 取消调度压缩
  • compactions show all: 显示所有在活跃时间线上的压缩
  • compactions showarchived: 显示指定时间窗口的压缩详情

差异命令

  • diff partition: 检查文件在一系列提交中的差异。仅用于分区表。
  • diff file: 检查文件在一系列提交中的差异

导出命令

  • export instants: 从时间线导出快照及其元数据

文件系统视图命令

  • show fsview all: 显示整个文件系统视图
  • show fsview latest: 显示最新的文件系统视图

HDFS Parquet导入命令

  • hdfsparquetimport: 将Parquet表导入Hoodie表

Hoodie日志文件命令

  • show logfile records: 从日志文件读取记录
  • show logfile metadata: 从日志文件读取提交元数据

Hoodie同步验证命令

  • sync validate: 通过计数记录数量来验证同步

Kerberos认证命令

  • kerberos kdestroy: 销毁Kerberos认证
  • kerberos kinit: 执行Kerberos认证

标记命令

  • marker delete: 删除标记

元数据命令

  • metadata stats: 打印元数据的统计信息
  • metadata list-files: 打印某个分区中所有文件的列表
  • metadata list-partitions: 列出元数据中的所有分区
  • metadata validate-files: 验证元数据中的所有分区的所有文件
  • metadata delete: 删除元数据表
  • metadata delete-record-index: 从元数据表中删除记录索引
  • metadata create: 创建元数据表(如果不存在)
  • metadata init: 从创建以来更新元数据表
  • metadata set: 设置元数据表的选项

修复命令

  • repair deduplicate: 去除包含重复项的分区路径,并生成修复文件以替换
  • rename partition: 重命名分区。用法:rename partition --oldPartition --newPartition
  • repair overwrite-hoodie-props: 用提供的文件覆盖hoodie.properties。风险操作,请小心进行!
  • repair migrate-partition-meta: 将当前以文本格式存储的所有分区元文件迁移为基础文件格式。参见HoodieTableConfig#PARTITION_METAFILE_USE_DATA_FORMAT。
  • repair addpartitionmeta: 如果不存在,则向表添加分区元数据
  • repair deprecated partition: 修复已弃用的分区("default")。将数据从已弃用的分区写入__HIVE_DEFAULT_PARTITION__。
  • repair show empty commit metadata: 显示失败的提交
  • repair corrupted clean files: 修复损坏的清理文件

还原命令

  • show restore: 显示还原的详细信息
  • show restores: 列出所有还原时点

回滚命令

  • show rollback: 显示回滚的详细信息
  • commit rollback: 回滚提交
  • show rollbacks: 列出所有回滚时点

保存点命令

  • savepoint rollback: 保存一个提交的保存点
  • savepoints show: 显示保存点
  • savepoint create: 创建一个保存点
  • savepoint delete: 删除保存点

Spark环境命令

  • set: 将spark launcher环境设置为cli
  • show env: 按键显示spark launcher环境
  • show envs all: 显示所有spark launcher环境

统计命令

  • stats filesizes: 显示文件大小的统计信息
  • stats wa: 写入放大。上插入的记录数量与实际写入的记录数量之比

表命令

  • table change-table-type: 将Hudi表类型更改为目标类型:COW或MOR。注意:在更改为COW之前,默认情况下该命令将执行所有待处理的压缩,并在需要时执行完整的压缩。
  • table update-configs: 使用提供的文件更新表配置。
  • table recover-configs: 从中途失败的更新/删除中恢复表配置。
  • create: 如果不存在,则创建Hoodie表
  • refresh, metadata refresh, commits refresh, cleans refresh, savepoints refresh: 刷新表元数据
  • table delete-configs: 从表中删除提供的表配置。
  • fetch table schema: 获取最新的表模式
  • connect: 连接到Hoodie表
  • desc: 描述Hoodie表的属性

临时视图命令

  • temp_query, temp query: 对创建的临时视图进行查询
  • temps_show, temps show: 显示所有视图名称
  • temp_delete, temp delete: 删除视图名称

时间线命令

  • metadata timeline show incomplete: 列出元数据表的活跃时间线中的所有未完成时刻
  • metadata timeline show active: 列出元数据表的活跃时间线中的所有时刻
  • timeline show incomplete: 列出活跃时间线中的所有未完成时刻
  • timeline show active: 列出活跃时间线中的所有时刻

升级或降级命令

  • downgrade table: 降级某个表
  • upgrade table: 升级某个表

工具命令

  • utils loadClass: 加载一个类

1.2. 常用命令

# 启动客户端
sh {HUDI_HOME}/hudi-cli/hudi-cli.sh
# 查看命令帮助
help
# 查看hudi版本
version
# 连接到Hoodie表
connect --path hdfs://cmccprdhadoop/apps/hive/warehouse/hudi_test.db/hudi_rbs_rbscmfprd_cmf_clm_claim_headers_cdc_test
# 查看表的描述信息
desc 
fetch table schema
# 查看提交信息,在比较少时可以使用,默认按照时间倒序排列
commits show
# 对提交信息排序
commits show --sortBy "Total Bytes Written" --desc true --limit 10

# 文件系统视图,分区由文件组组成,文件组包含按时间片提交的文件切片组成
show fsview all
show fsview latest --partitionPath "2018/08/31"
# 文件统计信息
stats filesizes --partitionPath 2016/09/01 --sortBy "95th" --desc true --limit 10
# 写入耗时
stats wa
# 查看待处理的压缩
compactions show all

# 查看写入分区信息 20250218103917543 来自 stats wa 命令结果
commit showpartitions --commit 20250218103917543 --sortBy "Total Bytes Written" --desc true --limit 10
# 写入到文件级别信息
commit showfiles --commit 20250218103917543 --sortBy "Partition Path"

1.2.1. 重复文件修复命令

# 启动客户端
sh {HUDI_HOME}/hudi-cli/hudi-cli.sh
# 连接到Hoodie表
connect --path hdfs://cmccprdhadoop/apps/hive/warehouse/hudi_test.db/hudi_rbs_rbscmfprd_cmf_clm_claim_headers_cdc_test
# 修复表数据
# 非分区表
repair deduplicate --repairedOutputPath hdfs://cmccprdhadoop/apps/hive/warehouse/hudi_test.db/hudi_rbs_rbscmfprd_cmf_clm_claim_headers_cdc_test/ --dedupeType upsert_type --sparkMaster yarn  --sparkMemory 8G
# 分区表 直接删除重复项
repair deduplicate --duplicatedPartitionPath cmf_clm_claim_headers --repairedOutputPath hdfs://cmccprdhadoop/apps/hive/warehouse/hudi_test.db/hudi_rbs_rbscmfprd_cmf_clm_claim_headers_cdc_test/cmf_clm_claim_headers --dedupeType upsert_type  --sparkMaster yarn  --sparkMemory 8G
# 分区表 删除重复项并将结果存储到另外的分区
repair deduplicate --duplicatedPartitionPath cmf_clm_claim_headers --repairedOutputPath hdfs://cmccprdhadoop/apps/hive/warehouse/hudi_test.db/hudi_rbs_rbscmfprd_cmf_clm_claim_headers_cdc_test/cmf_clm_claim_headers_bak --dedupeType upsert_type  --sparkMaster yarn  --sparkMemory 8G

# 确定修复后分区没有问题之后,删除旧分区,替换为新分区
# 删除之前的分区
hadoop fs -rm -r hdfs://cmccprdhadoop/apps/hive/warehouse/hudi_test.db/hudi_rbs_rbscmfprd_cmf_clm_claim_headers_cdc_test/cmf_clm_claim_headers
# 刷新元数据信息

# 重命名为之前的分区: rename partition --oldPartition --newPartition
rename partition cmf_clm_claim_headers_bak cmf_clm_claim_headers

# 查看分区
metadata list-partitions

<think>嗯,用户想了解Apache Hudi的安装和配置方法。我需要先整理现有的引用内容,看看哪些信息相关。引用2提到了源码编译步骤,包括使用Maven命令和参数配置,比如-Dspark3.3和-Dflink1.15。引用4提到了解压Maven的步骤,这部分可能和安装前的环境准备有关。引用1和3虽然主要讲项目结构和功能,但可能可以补充一些配置文件的介绍。 首先,安装Hudi可能需要环境准备,比如Java、Maven、Hadoop等。引用4中的解压Maven是必要步骤,但用户可能还需要安装Java和Hadoop。然后,源码编译部分在引用2里详细说明了,需要进入hudi目录执行Maven命令,参数要根据版本调整,比如Spark、Flink的版本兼容性。这部分需要注意用户的环境是否匹配,比如Hadoop版本3.3.4,可能需要用户检查自己的Hadoop版本。 接下来是配置部分,引用1提到了配置文件的介绍,比如hoodie.properties中的存储路径和表类型。用户需要根据实际环境设置HDFS路径,比如hdfs://namenode:8020/user/hudi。另外,表类型如COW或MOR的选择会影响性能,需要说明两者的区别。 然后,集成到Spark或Flink的配置,引用3提到Hudi作为Spark库的使用,可能需要添加依赖到Spark的配置中。比如在spark-defaults.conf中添加spark.jars.packages相关配置,确保Spark能识别Hudi。 可能还需要考虑常见问题,比如编译失败,可能是依赖版本不匹配,需要用户确认参数是否正确。例如,在引用2中提到的-Dspark3.3对应Spark版本,如果用户用的是Spark 3.2,可能需要调整参数。此外,Hadoop版本的问题,如果用户的环境是Hadoop 2.x,编译命令中的-Dhadoop.version也要相应修改。 用户的问题可能还涉及安装后的验证,比如运行示例作业或者查看Hudi表是否正确创建。可能需要指导用户如何提交Spark作业,或者检查HDFS上的文件结构是否符合预期。 最后,生成相关问题时要考虑用户可能的后续疑问,比如版本兼容性、配置优化、性能调优,或者与其他系统的集成,比如Hive。引用3提到Hudi支持Hive3,用户可能想知道如何配置Hudi与Hive的集成。</think>### Apache Hudi 安装与配置教程 以下是基于引用内容的安装与配置步骤整理: --- #### **1. 环境准备** - **Java**:需安装 JDK 8 或更高版本(推荐 OpenJDK)。 - **Maven**:用于源码编译,版本需 ≥3.6.3(引用[^4]中解压 Maven 后需配置环境变量)。 - **Hadoop**:Hudi 依赖 Hadoop 环境,需提前安装并配置 `HADOOP_HOME`。 - **Spark/Flink**:根据需求安装 Spark 或 Flink(引用[^2]中编译时需指定对应版本参数)。 --- #### **2. 源码编译** 从官网下载 Hudi 源码包(如 `hudi-1.0.1`),进入目录执行编译命令: ```bash cd hudi-1.0.1 mvn clean package -DskipTests -Dspark3.3 -Dflink1.15 -Dscala-2.12 -Dhadoop.version=3.3.4 -Pflink-bundle-shade-hive3 ``` 参数说明: - `-Dspark3.3`:指定 Spark 版本(根据实际版本调整,如 `-Dspark3.2`)。 - `-Dflink1.15`:指定 Flink 版本。 - `-Dhadoop.version=3.3.4`:需与环境中 Hadoop 版本一致[^2]。 --- #### **3. 配置 Hudi** 在项目配置文件(如 `hoodie.properties`)中设置核心参数: ```properties hoodie.datasource.write.storage.type = COPY_ON_WRITE # 表类型(COW 或 MERGE_ON_READ) hoodie.base.path = hdfs://namenode:8020/user/hudi # HDFS 存储路径 hoodie.table.name = hudi_table # 表名 ``` 更多配置可参考 Hudi 官方文档或项目内的 `config` 目录[^1][^3]。 --- #### **4. 集成到 Spark/Flink** - **Spark 集成**:将编译后的 Hudi JAR 包(如 `hudi-spark3.3-bundle_2.12-1.0.1.jar`)添加到 Spark 的 `jars` 目录,或在 `spark-defaults.conf` 中配置: ``` spark.jars.packages org.apache.hudi:hudi-spark3.3-bundle_2.12:1.0.1 ``` - **Flink 集成**:类似地,添加 Flink 相关依赖(如 `hudi-flink1.15-bundle`)。 --- #### **5. 验证安装** 运行简单示例作业(如写入 Hudi 表),检查 HDFS 上是否生成 `base` 和 `log` 文件目录。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Toroidals

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值