本文主要是介绍SparkSQL整合Hive实现metastore元数据共享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、需求
在兼容Hive技术的前提下,推进SparkSQL技术的使用,那么就会衍生出一个问题:如何让Hive和SparkSQL数据共享?,比如在Hive中操作,然后在SparkSQL中能够看到变化,反之亦然。
注意:记住一个前提,先使用Hive在先,后引入SparkSQL,笔者在操作过程中发现了一个问题,之前SparkSQL中的数据会看不到,只能看到Hive中的,这个问题有待进一步研究。
Hive版本:1.2.x
Spark版本:1.6.x
Hadoop版本:2.6.x
二、解决方案
1. 修改$HIVE_HOME/conf/hive-site.xml文件
cd $HIVE_HOME/conf
vim hive-site.xml#搜索找到hive.metastore.uris配置项
:/hive.metastore.uris
#增加该项配置值
thrift://hive_server_ip:9083
2. 启动metastore服务
hive --service metastore 1>/dev/null 2>&1 &
jobs查看服务是否启动
如果不启动服务,在启动Spark thriftServer服务的时候会报如下错误:
org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
3. copy hive-site.xml 到所有节点的$SPARK_HOME/conf
4. beeline -u jdbc:hive2://ip:10011进入SparkSQL
hive_test数据库是在安装Hivehttps://blog.csdn.net/u011817217/article/details/88813874中测试新建的一个数据库,但是之前在SparkSQL中创建的数据库没有显示出来。
虽然已经实现SparkSQL操作Hive,并且Hive之前创建的数据库能够显示,但是引出了一个问题:SparkSQL之前创建的数据库却没有显示出来。
这篇关于SparkSQL整合Hive实现metastore元数据共享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!