概述
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兼容多版本hive2.3.9版本Hive的支持CDH版本Hive(2.1.1)3.1.2版本的Hive参考的全部内容,希望文章能够帮你解决spark-3.1.2兼容多版本hive2.3.9版本Hive的支持CDH版本Hive(2.1.1)3.1.2版本的Hive参考所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复