spark-3.1.2兼容多版本hive
2.3.9版本Hive的支持
直接在实例化SparkSession时,启用hive支持即可
例如:
val spark = SparkSession.builder().appName("Spark Hive Example").config("spark.sql.warehouse.dir", warehouseLocation).enableHiveSupport().getOrCreate()
CDH版本Hive(2.1.1)
需要配置以下属性:
config(“spark.sql.hive.metastore.version”, “2.1.1”)
config(“spark.sql.hive.metastore.jars”, “maven”)
config(“spark.sql.hive.metastore.jars.path”, “org.apache.hive:hive-metastore:2.1.1”)
例如:
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("hive")val spark = SparkSession.builder()// cdh hive 2.1.1.config("spark.sql.hive.metastore.version", "2.1.1").config("spark.sql.hive.metastore.jars", "maven").config("spark.sql.hive.metastore.jars.path", "org.apache.hive:hive-metastore:2.1.1").config("hive.metastore.uris", "thrift://10.167.2.5:9083").config(sparkConf).enableHiveSupport().getOrCreate()spark.sql("show tables;").show()
先不要运行,找到ShutdownHookManager类,在这个类的logInfo("Deleting directory " + dirPath)附近打断点,阻止spark程序运行完后删除目录
打完断点后可以执行程序了,程序会在断点处阻塞住,我们通过控制台的日志信息,找到IsolatedClientLoader的提示信息,比如:
22/05/31 23:07:03 INFO IsolatedClientLoader: Downloaded metastore jars to /private/var/folders/ng/8nk0npb11v1gt6q9tj78085r0000gn/T/hive-v2_1-11b899b2-508d-4d0a-bb38-df4b193460ac
我们找到这个目录,这个目录就是cdh-2.1.1版本hive的依赖包,我们拷贝出来
更改刚才的属性,将.config(“spark.sql.hive.metastore.jars”, “maven”)改为.config(“spark.sql.hive.metastore.jars”, “path”),
将.config(“spark.sql.hive.metastore.jars.path”, “org.apache.hive:hive-metastore:2.1.1”)改为config(“spark.sql.hive.metastore.jars.path”,“拷贝出来的目录中的jar文件,使用file:///path的方式,使用逗号连接”)
再次运行就不会再进行下载了
3.1.2版本的Hive
使用方式类似CDH版本的hive(2.1.1)
.config(“spark.sql.hive.metastore.version”, “3.1.2”)
参考
https://spark.apache.org/docs/3.1.2/sql-data-sources-hive-tables.html
spark-3.1.2兼容多版本hive相关推荐
- tensorflow1.14.0 包含了1.x和2.x内容,此后版本要求兼容该版本
tensorflow1.4 包含了1.x和2.x内容,此后版本要求兼容该版本 https://blog.csdn.net/wishchin/article/details/97613292
- android 在使用ViewAnimationUtils.createCircularReveal()无法兼容低版本的情况下,另行实现圆形scale动画...
ViewAnimationUtils.createCircularReveal()的简介: ViewAnimationUtils.createCircularReveal()是安卓5.0才引入的,快速 ...
- 解决 Visual Studio 2017 RC 不兼容低版本 Visual Studio 创建的 MVC 4 项目的问题
解决 Visual Studio 2017 RC 不兼容低版本 Visual Studio 创建的 MVC 4 项目的问题 参考文章: (1)解决 Visual Studio 2017 RC 不兼容低 ...
- Android开发之解决NestedScrollView滑动监听兼容低版本的方法
NestedScrollView的滑动监听目前仅限api23及以上,为了兼容低版本如下自定义方法 可以自定义NestedScrollView即可如下: package cn.net.gfan.worl ...
- [css] 你对响应式设计的理解是什么?知道它基本的原理是吗?要想兼容低版本的IE怎么做呢?
[css] 你对响应式设计的理解是什么?知道它基本的原理是吗?要想兼容低版本的IE怎么做呢? 理解:在不同系统,不同设备,不同尺寸的界面,有良好的用户体验,舒适的阅读体验,交互体验. 原理:根据不同设 ...
- android 沉浸式状态栏 兼容低版本,详解Android沉浸式实现兼容解决办法
自android5.0开始,沉浸式状态栏似乎成为一种潮流,应用里缺少沉浸式总感觉少些什么.于是乎,我开始到处找如何兼容低版本的沉浸式,由于Android平台跨度问题,总遇到一些不如人意的问题.终于,皇 ...
- 【Warning】Unity2021.1将不兼容之前版本ECS
本文首发公众号洪流学堂.洪流学堂,让你快人几步. Unity 2021.1以后,DOTS会有较大更新. DOTS生态中的部分包 (Burst, Jobs, Math, Collections) 继续兼 ...
- vue 检测ie版本_Vue2+Webpack+ES6 兼容低版本浏览器(IE9)解决方案
Vue2+Webpack+ES6 兼容低版本浏览器(IE9)解决方案 解决方式:安装 "babel-polyfill" 即可. 命令:npm install --save-dev ...
- 3dmax高版本转低版本插件_Fundebug前端JavaScript插件更新至1.8.0,兼容低版本的Android浏览器...
兼容低版本Android浏览器,请大家及时更新. Fundebug前端BUG监控服务 Fundebug是专业的程序BUG监控平台,我们JavaScript插件可以提供全方位的BUG监控,可以帮助开发者 ...
最新文章
- python 多线程及线程间通信
- 一个线程中lock用法的经典实例
- Open×××的新钩子设计
- 作为团队技术负责人,我是这样面试前端的
- 秒懂5G!通俗易懂外行也能看明白
- 区块链学习之区块链思想的诞生(一)
- 11.4 Daily Scrum
- 力扣 买卖股票的最佳时机II
- python大文件排序_Python如何实现大文件排序?Python大文件排序的实现方法
- python装饰器测试_python 装饰器
- GARFIELD@10-21-2004
- 强化学习Q-learning简单理解
- Node.js菜鸟教程 思维导图
- 尝试运行项目时出错,无法启动程序 , 由于应用程序配置不正确,未能启动此应用程序。请查看清单文件以查找可能的错误。
- 阿帕奇服务器文件上传,windows基于阿帕奇+PHP服务器,实现vc++文件上传功能
- 南丁格尔图文字颜色跟随
- Trusted Computing and DRM
- 【iOS】通过URL Scheme启动app(收集了常用的app的URL Scheme)
- Dingo Api请求接口404?
- 【MySQL】测试题01