版本

spark 3.1.x
hive 1.2.x
hadoop 2.6.0-cdh-5.13.1

背景

由于好多公司的yarn集群用的是cdh版本的,用Cloudera Manager管理的。而截止到目前为止,spark的最新版本已经到了3.1.1。而对于cdh 2.6.0-5.13.1来说目前支持的hive版本为1.2.1,所以我们做一下集中尝试:

  • 直接修改pom文件中的hive对应的版本
  • 直接修改编译的hadoop版本
  • 在spark运行的时候,动态加载hive对应的版本包

直接修改pom文件中的hive对应的版本

直接在spark的父pom文件增加如下proflie信息:

<profile><id>hive-1.2</id><properties><hive.version>1.2.1</hive.version><!-- Version used for internal directory structure --><hive.version.short>1.2</hive.version.short><hive.storage.version>2.6.0</hive.storage.version><datanucleus-core.version>3.2.10</datanucleus-core.version></properties></profile>

运行

./dev/make-distribution.sh --name 2.6.0-cdh5.13.1  --pip  --tgz  -Phive-1.2 -Phive-thriftserver -Pyarn

报错:

[INFO] --- scala-maven-plugin:4.3.0:compile (scala-compile-first) @ spark-hive_2.12 ---
[INFO] Using incremental compilation using Mixed compile order
[INFO] Compiler bridge file: .sbt/1.0/zinc/org.scala-sbt/org.scala-sbt-compiler-bridge_2.12-1.3.1-bin_2.12.10__52.0-1.3.1_20191012T045515.jar
[INFO] compiler plugin: BasicArtifact(com.github.ghik,silencer-plugin_2.12.10,1.6.0,null)
[INFO] Compiling 29 Scala sources and 2 Java sources to spark/sql/hive/target/scala-2.12/classes ...
[ERROR] [Error] spark/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveShim.scala:29: object SerializationUtilities is not a msmber of package org.apache.hadoop.hive.ql.exec
[ERROR] [Error] spark/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveShim.scala:150: not found: value SerializationUtilities
[ERROR] [Error] spark/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveShim.scala:154: not found: value SerializationUtilities
[ERROR] [Error] spark/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUDFs.scala:350: too many arguments (4) for constructor SimpleGenericUDAFParameterInfo: (x$1: Array[org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector], x$2: Boolean, x$3: Boolean)org.apache.hadoop.hive.ql.udf.generic.SimpleGenericUDAFParameterInfo
[ERROR] four errors found

说明hive1.2.1版本的不兼容

直接修改编译的hadoop版本

直接修改hadoop的版本为2.6.0-cdh5.13.1
运行如下命令:

./dev/make-distribution.sh --name 2.6.0-cdh5.13.1  --pip  --tgz  -Phive-1.2 -Phive-thriftserver -Pyarn -Dhadoop.version=2.6.0-cdh5.13.1

报错:

[INFO] --- scala-maven-plugin:4.3.0:compile (scala-compile-first) @ spark-core_2.12 ---
[INFO] Using incremental compilation using Mixed compile order
[INFO] Compiler bridge file: .sbt/1.0/zinc/org.scala-sbt/org.scala-sbt-compiler-bridge_2.12-1.3.1-bin_2.12.10__52.0-1.3.1_20191012T045515.jar
[INFO] compiler plugin: BasicArtifact(com.github.ghik,silencer-plugin_2.12.10,1.6.0,null)
[INFO] Compiling 560 Scala sources and 99 Java sources to spark/core/target/scala-2.12/classes ...
[ERROR] [Error] spark/core/src/main/scala/org/apache/spark/ui/HttpSecurityFilter.scala:107: type mismatch;found   : K where type Krequired: String
[ERROR] [Error] spark/core/src/main/scala/org/apache/spark/ui/HttpSecurityFilter.scala:107: value map is not a member of V
[ERROR] [Error] spark/core/src/main/scala/org/apache/spark/ui/HttpSecurityFilter.scala:107: missing argument list for method stripXSS in class XssSafeRequest
Unapplied methods are only converted to functions when a function type is expected.
You can make this conversion explicit by writing `stripXSS _` or `stripXSS(_)` instead of `stripXSS`.
[ERROR] [Error] spark/core/src/main/scala/org/apache/spark/ui/PagedTable.scala:307: value startsWith is not a member of K
[ERROR] [Error] spark/core/src/main/scala/org/apache/spark/util/Utils.scala:580: value toLowerCase is not a member of object org.apache.hadoop.util.StringUtils
[ERROR] 5 errors found

说明对2.6.0-cdh5.13.1版本的不兼容

在spark运行的时候,动态加载hive对应的版本包

根据官网的说明 ,spark从1.4.0 开始就能和不同的hive元数据进行交互,也就是说spark编译的hive内部版本和spark访问hive的元数据是独立的,可以配置不同的hive版本进行对应元数据的访问。具体的配置可以参考以上官网配置。

spark 3.1.x支持(兼容)hive 1.2.x以及hadoop cdh版本的尝试相关推荐

  1. Struct复杂数据类型的UDF编写、兼容HIVE的GenericUDF编写

    一.背景介绍: MaxCompute 2.0版本升级后,Java UDF支持的数据类型从原来的BIGINT.STRING.DOUBLE.BOOLEAN扩展了更多基本的数据类型,同时还扩展支持了ARRA ...

  2. spark把kafka数据写到hive

    写入分区表: 准备工作:先建好分区表 方法一:(使用dataframe) 写数据到数据所在的位置,因为hive分区的本质就是分文件夹,先用spark把数据写到文件夹位置,然后执行sql添加分区 1.写 ...

  3. spark数据查询语句select_sparksql读取hive表中数据

    文章目录 spark sql与hive本地调试 new HiveContext空指针异常 权限: 异常 执行select查询的时候找不到host spark sql与hive本地调试 将hive-si ...

  4. ClickHouse数据导入(Flink、Spark、Kafka、MySQL、Hive)

    本文分享主要是ClickHouse的数据导入方式,本文主要介绍如何使用Flink.Spark.Kafka.MySQL.Hive将数据导入ClickHouse,具体内容包括: 使用Flink导入数据 使 ...

  5. oracle 11g dul,【学习笔记】Oracle DUL 11 兼容Oracle 12C数据库的DUL工具最新版本

    天萃荷净 oracle dul 11 正式发布,迫不及待的下载来测试,现在版本号为dul 11.2.0.0.1,目前只发布了for linux,其他版本估计要等等.期待该版本有引进新功能 1.orac ...

  6. 支持HEVC/H265 RTMP接收的FFMPEG/FFPLAY WINDOWS版本

    本文镜像:https://linkpi.cn/archives/1249 本文链接:https://blog.csdn.net/weixin_45326556/article/details/1111 ...

  7. elasticsearch6升级7后hive映射表报错es hadoop illegal argument canot detect es version 问题解决

    报错日志 使用dbview 查询hive里面的es映射表,报错如下: 从错误来看,主要是两个原因: 1.es集群不可访问 2.es.nodes.wan.only属性设置不正确 排查思路 首先排查es集 ...

  8. 视频教程-PowerPoint项目实战从入门到精通视频课程(兼容2007、2010、2013、2016版本)-Office/WPS

    PowerPoint项目实战从入门到精通视频课程(兼容2007.2010.2013.2016版本) 有十年的开发经验和十年的培训经验,熟悉以下技术: 开源技术:struts2.hibernate.my ...

  9. Spark SQL兼容Hive及扩展

    https://blog.csdn.net/junerli/article/details/78654208

最新文章

  1. Kotlin学习笔记-基础语法
  2. html css 背景图片
  3. js中函数传递参数,究竟是值传递还是引用传递?
  4. OPENCV裁剪图片
  5. 安装tensorflow出现超时,找不到指定模+python 各个指定版本安装
  6. YOLOv5在建筑工地中安全帽佩戴检测的应用(已开源+数据集)
  7. 很经典的独白,搞网络的童鞋们,你们懂得
  8. idea java api_intellij idea怎么设置java帮助文档(示例代码)
  9. 学生a3制图标题栏尺寸手绘_AutoCAD教程之绘制图框和标题栏
  10. PLSQL使用text import导入数据
  11. 高通关闭插入USB后自动开机的解决方案
  12. 短视频如何添加封面图
  13. 好的设计的10个原则
  14. 诺基亚英雄迟暮:抗拒Android或难挽颓势
  15. 优效文件助手-【深度】都2021年了,你还只会用文件夹管理电脑文件?
  16. Linux 性能优化的全景指南,都在这一篇里了,建议收藏~
  17. 前端热门工具简直不要太好用了!
  18. ubuntu 16.04 利用samba 共享移动硬盘
  19. python输出文本换行_python中print怎么不换行输出
  20. 什么生成对抗网络GAN、强化学习

热门文章

  1. ad16怎么画弧线_在AD软件中如何实现圆弧走线?
  2. python二维码加动态图_用python自制个性二维码(设置带LOGO的二维码带动图)
  3. PTA乙级题解(110题全)
  4. 项目启动成功,但是Eureka页面不显示
  5. 项目管理中软件项目文档的分类管理
  6. AX4.0 SP2本地化的问题---汇兑损益报表打印
  7. knex 找不到mysql_转义knex mysql查询语句
  8. 福昕阅读器解除安全阅读模式
  9. TJA1050国产替代DP1050T高速 CAN 总线收发器
  10. YDLidar开发-在win10下使用C++/python开发全过程-SDK配置