基础引擎依赖性、兼容性、默认版本优化

  1. 低版本 linkis 需要通过修改代码来适配不同的 Hive、Spark 等版本,因为兼容性问题,编译可能会失败,可以减少这些基础引擎的兼容性问题。
  2. Hadoop、Hive、Spark 3.x 已经很成熟,并且低版本的引擎可能有潜在的风险点,社区很多用户默认使用 3.x 版本,因此考虑将 Linkis 默认编译的版本修改为 3.x 。

Linkis 1.4.0 将 Hadoop、Hive、Spark 默认版本修改为 3.x,具体版本分别为 Hadoop 3.3.4、Hive 3.1.3、Spark 3.2.1 。

不同的hive版本的编译,我们只需要指定-D=xxx就可以了,比如:

  1. mvn clean install package -Dhive.version=2.3.3

不同版本的spark编译,我们也只需要指定-D=xxx就可以了,常用的使用场景如下:

  1. #spark3+hadoop3
  2. mvn install package
  3. #spark3+hadoop2
  4. mvn install package -Phadoop-2.7
  5. #spark2+hadoop2
  6. mvn install package -Pspark-2.4 -Phadoop-2.7
  7. #spark2+ hadoop3
  8. mvn install package -Pspark-2.4
  1. 默认版本编译时,基础版本为:hadoop3.3.4 + hive3.1.3 + spark3.2.1
  1. mvn install package

由于默认基础引擎的默认版本升级,spark-3.2hadoop-3.3spark-2.4-hadoop-3.3 profile被移除,新增profile hadoop-2.7 and spark-2.4

  1. spark的子版本可以通过-Dspark.version=xxx 来指定,系统默认使用的 scala 版本为 2.12.17,可适配 spark 3.x 版本 。如需编译 spark 2.x,需要使用 scala 2.11 版本。可通过 -Pspark-2.4 参数,或者 -Dspark.version=2.xx -Dscala.version=2.11.12 -Dscala.binary.version=2.11 编译。

  2. hadoop的子版本可以通过-Dhadoop.version=xxx 来指定

举个例子 :

  1. mvn install package -Pspark-3.2 -Phadoop-3.3 -Dspark.version=3.1.3
  1. hive 2.x 版本需要依赖 jersey,hive EC 默认编译时未添加 jersey依赖,可通过如下指引编译。

编译 hive 2.3.3 版本

编译 hive EC 时默认添加了指定 2.3.3 版本时激活添加 jersey 依赖的 profile,用户可通过指定 -Dhive.version=2.3.3 参数编译

编译其它 hive 2.x 版本

修改 linkis-engineconn-plugins/hive/pom.xml 文件,将 2.3.3 修改为用户编译版本,如 2.1.0

  1. <profile>
  2. <id>hive-jersey-dependencies</id>
  3. <activation>
  4. <property>
  5. <name>hive.version</name>
  6. <!-- <value>2.3.3</value> -->
  7. <value>2.1.0</value>
  8. </property>
  9. </activation>
  10. ...
  11. </profile>

编译时添加 -Dhive.version=2.1.0 参数。