文章目录
Spark-On-Hive
为什么要把Spark和Hive整合?
- Hive将SQL转成MR程序,执行速度相对较慢
原理:
使用SparkSQL整合Hive,其实就是让SparkSQL去加载Hive的元数据库,然后通过SparkSQL执行引擎去操作Hive表内的数据。
所以,首先要开启Hive的元数据服务,让SparkSQL能够加载到元数据。
1、Hive开启MetaStore服务
修改:hive/conf/hive-site.xml,新增加以下配置
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
后台启动Hive MetaStore服务
nohup hive --service metastore &
2、拷贝配置文件
拷贝
hive-site.xml 元数据仓库的位置等信息
core-site.xml 安全相关的配置
hdfs-site.xml HDFS相关的配置
到Spark的配置文件内
3、分发三个文件到其他节点
scp hive-site.xml core-site.xml hdfs-site.xml node02:$PWD
scp hive-site.xml core-site.xml hdfs-site.xml node03:$PWD
4、下载/查找MySQL连接驱动添加到Spark的jars文件中
5、后台启动Hive Metastore服务
IDEA代码开发
只需要将
hive-site.xml
core-site.xml
hdfs-site.xml
拷贝到项目得resource中并清空target
def main(args: Array[String]): Unit = {
//创建sparksession 开启hive语法得支持
val spark: SparkSession = SparkSession.builder().appName("SparkSQL_Hive").master("local[*]").enableHiveSupport().getOrCreate()
//执行命令
spark.sql("show databases").show()
spark.sql("use telecom").show()
spark.sql("show tables ").show()
spark.sql("select * from data_connection limit 2").show()
//关闭
spark.stop()
}
版权声明:本文为weixin_38097878原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。