一、需求
在兼容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.youkuaiyun.com/u011817217/article/details/88813874中测试新建的一个数据库,但是之前在SparkSQL中创建的数据库没有显示出来。
虽然已经实现SparkSQL操作Hive,并且Hive之前创建的数据库能够显示,但是引出了一个问题:SparkSQL之前创建的数据库却没有显示出来。