修改了Hive版本为3.1.2,其携带的jetty是0.9.3,hudi本身用的0.9.4,存在依赖冲突。
1)修改hudi-spark-bundle的pom文件,排除低版本jetty,添加hudi指定版本的jetty:
vim /opt/software/hudi-0.12.0/packaging/hudi-spark-bundle/pom.xml
在382行的位置,修改如下(红色部分):
${hive.groupid}
hive-service
${hive.version}
${spark.bundle.hive.scope}
guava
com.google.guava
org.eclipse.jetty
*
org.pentaho
*
${hive.groupid}
hive-service-rpc
${hive.version}
${spark.bundle.hive.scope}
${hive.groupid}
hive-jdbc
${hive.version}
${spark.bundle.hive.scope}
javax.servlet
*
javax.servlet.jsp
*
org.eclipse.jetty
*
${hive.groupid}
hive-metastore
${hive.version}
${spark.bundle.hive.scope}
javax.servlet
*
org.datanucleus
datanucleus-core
javax.servlet.jsp
*
guava
com.google.guava
${hive.groupid}
hive-common
${hive.version}
${spark.bundle.hive.scope}
org.eclipse.jetty.orbit
javax.servlet
org.eclipse.jetty
*
org.eclipse.jetty
jetty-server
${jetty.version}
org.eclipse.jetty
jetty-util
${jetty.version}
org.eclipse.jetty
jetty-webapp
${jetty.version}
org.eclipse.jetty
jetty-http
${jetty.version}
否则在使用spark向hudi表插入数据时,会报错如下:
java.lang.NoSuchMethodError: org.apache.hudi.org.apache.jetty.server.session.SessionHandler.setHttpOnly(Z)V
2)修改hudi-utilities-bundle的pom文件,排除低版本jetty,添加hudi指定版本的jetty:
vim /opt/software/hudi-0.12.0/packaging/hudi-utilities-bundle/pom.xml
在405行的位置,修改如下(红色部分):
org.apache.hudi
hudi-common
${project.version}
org.eclipse.jetty
*
org.apache.hudi
hudi-client-common
${project.version}
org.eclipse.jetty
*
${hive.groupid}
hive-service
${hive.version}
${utilities.bundle.hive.scope}
servlet-api
javax.servlet
guava
com.google.guava
org.eclipse.jetty
*
org.pentaho
*
${hive.groupid}
hive-service-rpc
${hive.version}
${utilities.bundle.hive.scope}
${hive.groupid}
hive-jdbc
${hive.version}
${utilities.bundle.hive.scope}
javax.servlet
*
javax.servlet.jsp
*
org.eclipse.jetty
*
${hive.groupid}
hive-metastore
${hive.version}
${utilities.bundle.hive.scope}
javax.servlet
*
org.datanucleus
datanucleus-core
javax.servlet.jsp
*
guava
com.google.guava
${hive.groupid}
hive-common
${hive.version}
${utilities.bundle.hive.scope}
org.eclipse.jetty.orbit
javax.servlet
org.eclipse.jetty
*
org.eclipse.jetty
jetty-server
${jetty.version}
org.eclipse.jetty
jetty-util
${jetty.version}
org.eclipse.jetty
jetty-webapp
${jetty.version}
org.eclipse.jetty
jetty-http
${jetty.version}
否则在使用DeltaStreamer工具向hudi表插入数据时,也会报Jetty的错误。
mvn clean package -DskipTests -Dspark3.2 -Dflink1.13 -Dscala-2.12 -Dhadoop.version=3.1.3 -Pflink-bundle-shade-hive3
编译成功后,进入hudi-cli说明成功:
编译完成后,相关的包在packaging目录的各个模块中:
比如,flink与hudi的包:
博客主页:https://manor.blog.csdn.net
欢迎点赞 收藏 ⭐留言 如有错误敬请指正!
本文由 Maynor 原创,首发于 CSDN博客
不能老盯着手机屏幕,要不时地抬起头,看看老板的位置⭐
数据湖专栏持续更新,欢迎订阅:https://blog.csdn.net/xianyu120/category_12388063.html