Hudi数据湖技术引领大数据新风口(三)解决spark模块依赖冲突

简介: Hudi数据湖技术引领大数据新风口(三)解决spark模块依赖冲突

解决spark模块依赖冲突

修改了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 -->
  <dependency>
   <groupId>${hive.groupid}</groupId>
   <artifactId>hive-service</artifactId>
   <version>${hive.version}</version>
   <scope>${spark.bundle.hive.scope}</scope>
   <exclusions>
    <exclusion>
     <artifactId>guava</artifactId>
     <groupId>com.google.guava</groupId>
    </exclusion>
    <exclusion>
     <groupId>org.eclipse.jetty</groupId>
     <artifactId>*</artifactId>
    </exclusion>
    <exclusion>
     <groupId>org.pentaho</groupId>
     <artifactId>*</artifactId>
    </exclusion>
   </exclusions>
  </dependency>
  <dependency>
   <groupId>${hive.groupid}</groupId>
   <artifactId>hive-service-rpc</artifactId>
   <version>${hive.version}</version>
   <scope>${spark.bundle.hive.scope}</scope>
  </dependency>
  <dependency>
   <groupId>${hive.groupid}</groupId>
   <artifactId>hive-jdbc</artifactId>
   <version>${hive.version}</version>
   <scope>${spark.bundle.hive.scope}</scope>
   <exclusions>
    <exclusion>
     <groupId>javax.servlet</groupId>
     <artifactId>*</artifactId>
    </exclusion>
    <exclusion>
     <groupId>javax.servlet.jsp</groupId>
     <artifactId>*</artifactId>
    </exclusion>
    <exclusion>
     <groupId>org.eclipse.jetty</groupId>
     <artifactId>*</artifactId>
    </exclusion>
   </exclusions>
  </dependency>
  <dependency>
   <groupId>${hive.groupid}</groupId>
   <artifactId>hive-metastore</artifactId>
   <version>${hive.version}</version>
   <scope>${spark.bundle.hive.scope}</scope>
   <exclusions>
    <exclusion>
     <groupId>javax.servlet</groupId>
     <artifactId>*</artifactId>
    </exclusion>
    <exclusion>
     <groupId>org.datanucleus</groupId>
     <artifactId>datanucleus-core</artifactId>
    </exclusion>
    <exclusion>
     <groupId>javax.servlet.jsp</groupId>
     <artifactId>*</artifactId>
    </exclusion>
    <exclusion>
     <artifactId>guava</artifactId>
     <groupId>com.google.guava</groupId>
    </exclusion>
   </exclusions>
  </dependency>
  <dependency>
   <groupId>${hive.groupid}</groupId>
   <artifactId>hive-common</artifactId>
   <version>${hive.version}</version>
   <scope>${spark.bundle.hive.scope}</scope>
   <exclusions>
    <exclusion>
     <groupId>org.eclipse.jetty.orbit</groupId>
     <artifactId>javax.servlet</artifactId>
    </exclusion>
    <exclusion>
     <groupId>org.eclipse.jetty</groupId>
     <artifactId>*</artifactId>
    </exclusion>
   </exclusions>
</dependency>
  <!-- 增加hudi配置版本的jetty -->
  <dependency>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-server</artifactId>
   <version>${jetty.version}</version>
  </dependency>
  <dependency>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-util</artifactId>
   <version>${jetty.version}</version>
  </dependency>
  <dependency>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-webapp</artifactId>
   <version>${jetty.version}</version>
  </dependency>
  <dependency>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-http</artifactId>
   <version>${jetty.version}</version>
  </dependency>

否则在使用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行的位置,修改如下(红色部分):

<!-- Hoodie -->
  <dependency>
   <groupId>org.apache.hudi</groupId>
   <artifactId>hudi-common</artifactId>
   <version>${project.version}</version>
   <exclusions>
    <exclusion>
     <groupId>org.eclipse.jetty</groupId>
     <artifactId>*</artifactId>
    </exclusion>
   </exclusions>
  </dependency>
  <dependency>
   <groupId>org.apache.hudi</groupId>
   <artifactId>hudi-client-common</artifactId>
   <version>${project.version}</version>
   <exclusions>
    <exclusion>
     <groupId>org.eclipse.jetty</groupId>
     <artifactId>*</artifactId>
    </exclusion>
   </exclusions>
  </dependency>
<!-- Hive -->
  <dependency>
   <groupId>${hive.groupid}</groupId>
   <artifactId>hive-service</artifactId>
   <version>${hive.version}</version>
   <scope>${utilities.bundle.hive.scope}</scope>
   <exclusions>
    <exclusion>
     <artifactId>servlet-api</artifactId>
     <groupId>javax.servlet</groupId>
    </exclusion>
    <exclusion>
     <artifactId>guava</artifactId>
     <groupId>com.google.guava</groupId>
    </exclusion>
    <exclusion>
     <groupId>org.eclipse.jetty</groupId>
     <artifactId>*</artifactId>
    </exclusion>
    <exclusion>
     <groupId>org.pentaho</groupId>
     <artifactId>*</artifactId>
    </exclusion>
   </exclusions>
  </dependency>
  <dependency>
   <groupId>${hive.groupid}</groupId>
   <artifactId>hive-service-rpc</artifactId>
   <version>${hive.version}</version>
   <scope>${utilities.bundle.hive.scope}</scope>
  </dependency>
  <dependency>
   <groupId>${hive.groupid}</groupId>
   <artifactId>hive-jdbc</artifactId>
   <version>${hive.version}</version>
   <scope>${utilities.bundle.hive.scope}</scope>
   <exclusions>
    <exclusion>
     <groupId>javax.servlet</groupId>
     <artifactId>*</artifactId>
    </exclusion>
    <exclusion>
     <groupId>javax.servlet.jsp</groupId>
     <artifactId>*</artifactId>
    </exclusion>
    <exclusion>
     <groupId>org.eclipse.jetty</groupId>
     <artifactId>*</artifactId>
    </exclusion>
   </exclusions>
  </dependency>
  <dependency>
   <groupId>${hive.groupid}</groupId>
   <artifactId>hive-metastore</artifactId>
   <version>${hive.version}</version>
   <scope>${utilities.bundle.hive.scope}</scope>
   <exclusions>
    <exclusion>
     <groupId>javax.servlet</groupId>
     <artifactId>*</artifactId>
    </exclusion>
    <exclusion>
     <groupId>org.datanucleus</groupId>
     <artifactId>datanucleus-core</artifactId>
    </exclusion>
    <exclusion>
     <groupId>javax.servlet.jsp</groupId>
     <artifactId>*</artifactId>
    </exclusion>
    <exclusion>
     <artifactId>guava</artifactId>
     <groupId>com.google.guava</groupId>
    </exclusion>
   </exclusions>
  </dependency>
  <dependency>
   <groupId>${hive.groupid}</groupId>
   <artifactId>hive-common</artifactId>
   <version>${hive.version}</version>
   <scope>${utilities.bundle.hive.scope}</scope>
   <exclusions>
    <exclusion>
     <groupId>org.eclipse.jetty.orbit</groupId>
     <artifactId>javax.servlet</artifactId>
    </exclusion>
    <exclusion>
     <groupId>org.eclipse.jetty</groupId>
     <artifactId>*</artifactId>
    </exclusion>
   </exclusions>
</dependency>
  <!-- 增加hudi配置版本的jetty -->
  <dependency>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-server</artifactId>
   <version>${jetty.version}</version>
  </dependency>
  <dependency>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-util</artifactId>
   <version>${jetty.version}</version>
  </dependency>
  <dependency>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-webapp</artifactId>
   <version>${jetty.version}</version>
  </dependency>
  <dependency>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-http</artifactId>
   <version>${jetty.version}</version>
  </dependency>

否则在使用DeltaStreamer工具向hudi表插入数据时,也会报Jetty的错误。

2.2.6 执行编译命令

mvn clean package -DskipTests -Dspark3.2 -Dflink1.13 -Dscala-2.12 -Dhadoop.version=3.1.3 -Pflink-bundle-shade-hive3

2.2.7 编译成功

编译成功后,进入hudi-cli说明成功:

编译完成后,相关的包在packaging目录的各个模块中:

比如,flink与hudi的包:

下一章 核心概念

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
11月前
|
存储 SQL 机器学习/深度学习
一文辨析:数据仓库、数据湖、湖仓一体
本文深入解析数据仓库、数据湖与湖仓一体的技术原理与适用场景。数据仓库结构严谨、查询高效,适合处理结构化数据;数据湖灵活开放,支持多模态数据,但治理难度高;湖仓一体融合两者优势,实现低成本存储与高效分析,适合大规模数据场景。文章结合企业实际需求,探讨如何选择合适的数据架构,并提供湖仓一体的落地迁移策略,助力企业提升数据价值。
一文辨析:数据仓库、数据湖、湖仓一体
存储 数据采集 大数据
298 0
|
存储 分布式计算 大数据
数据湖——大数据存储的新思维,如何打破传统束缚?
数据湖——大数据存储的新思维,如何打破传统束缚?
514 16
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
803 79
|
存储 分布式计算 大数据
基于阿里云大数据平台的实时数据湖构建与数据分析实战
在大数据时代,数据湖作为集中存储和处理海量数据的架构,成为企业数据管理的核心。阿里云提供包括MaxCompute、DataWorks、E-MapReduce等在内的完整大数据平台,支持从数据采集、存储、处理到分析的全流程。本文通过电商平台案例,展示如何基于阿里云构建实时数据湖,实现数据价值挖掘。平台优势包括全托管服务、高扩展性、丰富的生态集成和强大的数据分析工具。
|
存储 分布式计算 大数据
大数据揭秘:从数据湖到数据仓库的全面解析
大数据揭秘:从数据湖到数据仓库的全面解析
507 19
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
787 2
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
720 1
|
10月前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
730 0
|
11月前
|
机器学习/深度学习 传感器 分布式计算
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
656 14