如何顺利运行Apache Hudi Hive同步工具?依赖兼容问题求助
解决Hudi Hive同步工具依赖冲突与运行问题
1. 使用官方预编译包运行(推荐)
- 直接下载对应版本的Hudi完整预编译包(非源码包),解压后进入
hudi-sync/hudi-hive-sync目录,执行自带的run-sync-tools.sh脚本。 - 预编译包已包含所有依赖jar,无需手动添加或修改配置,可直接规避
ClassNotFoundException和版本冲突问题。 - 示例运行命令:
./run-sync-tools.sh --jdbc-url jdbc:hive2://<hive-host>:10000 --database <db-name> --table <table-name> --base-path <hudi-table-base-path> --sync-mode hms
2. 基于源码用Maven Exec插件运行
- 无需手动修改依赖的
providedscope,直接通过Maven的exec:java插件拉取所有必要依赖并运行:mvn exec:java -Dexec.mainClass="org.apache.hudi.hive.HiveSyncTool" -Dexec.args="--jdbc-url jdbc:hive2://<hive-host>:10000 --database <db-name> --table <table-name> --base-path <hudi-table-base-path> --sync-mode hms" -pl hudi-sync/hudi-hive-sync -am - 该方式会自动处理依赖传递,确保版本对齐,避免手动调整scope引发的冲突。
3. 彻底解决Parquet-Avro版本冲突
- 不要单独修改Parquet或Avro的版本,直接复用Hudi源码中
dependencyManagement定义的统一版本:- 若自定义pom,导入Hudi的bom来强制统一所有依赖版本:
<dependencyManagement> <dependencies> <dependency> <groupId>org.apache.hudi</groupId> <artifactId>hudi-bom</artifactId> <version>${hudi.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
- 若自定义pom,导入Hudi的bom来强制统一所有依赖版本:
内容的提问来源于stack exchange,提问作者oceansize
相关产品推荐
相关产品推荐

