0


摸鱼大数据——Spark SQL——Spark on Hive部署

1、集成原理

 HiveServer2的主要作用: 接收SQL语句,进行语法检查;解析SQL语句;优化;将SQL转变成MapReduce程序,提交到Yarn集群上运行
 ​
 SparkSQL与Hive集成,实际上是替换掉HiveServer2。是SparkSQL中的HiveServer2替换掉了Hive中的HiveServer2。
 ​
 集成以后优点如下:
 1- 对于SparkSQL来说,可以避免在代码中编写schema信息。直接向MetaStore请求元数据信息
 2- 对于SparkSQL来说,多个人可以共用同一套元数据信息,避免每个人对数据理解不同造成代码功能兼容性问题
 3- 对于Hive来说,底层执行引擎由之前的MapReduce变成了Spark Core,能够提升运行效率
 4- 对于使用者/程序员来说,SparkSQL与Hive集成,对于上层使用者来说,是完全透明的。

2、集成环境配置

SparkSQL整合Hive步骤

(1)检查hive中 hive-site.xml中,是否有关于metastore的地址配置。如果没有,需要新增操作

cd /export/server/hive/conf

vim hive-site.xml

<property>
<name>hive.metastore.uris</name>

<value>thrift://node1.itcast.cn:9083</value>
</property>

(2)node1上 将hive-site.xml拷贝到spark安装路径conf目录

cd /export/server/hive/conf

cp hive-site.xml /export/server/spark/conf/

(3)将mysql的连接驱动包拷贝到spark的jars目录下

node1执行以下命令将连接驱动包拷贝到spark的jars目录下,三台机器都要进行拷贝

cd /export/server/hive/lib

cp mysql-connector-java-5.1.32.jar /export/server/spark/jars/

3、启动metastore服务

 # 注意: 
 # 启动 hadoop集群
 start-all.sh
 ​
 # 启动hive的metastore
 nohup /export/server/hive/bin/hive --service metastore &
 ​
 # 测试spark-sql
 /export/server/spark/bin/spark-sql

4、SparkOnHive操作

4.1 黑窗口测试spark-sql
 [root@node1 bin]# /export/server/spark/bin/spark-sql
 ...
 spark-sql>show databases;
 ...
 spark-sql>create database if not exists spark_demo;
 ...
 spark-sql>create table if not exists spark_demo.stu(id int,name string);
 ...
 spark-sql>insert into  spark_demo.stu values(1,'张三'),(2,'李四');
 ...
4.2 python代码测试spark-sql

SparkOnHive配置:

 spark.sql.warehouse.dir: 告知Spark数据表存放的地方。推荐使用HDFS。如果不配置,默认使用本地磁盘存储。
 hive.metastore.uris: 告知Spark,MetaStore元数据管理服务的连接信息
 enableHiveSupport() : 开启Spark和Hive的集成
 ​
 使用格式如下:
  spark = SparkSession.builder\
         .config('spark.sql.warehouse.dir','hdfs://node1:8020/user/hive/warehouse')\
         .config('hive.metastore.uris','thrift://node1.itcast.cn:9083')\
         .appName('pyspark_demo')\
         .master('local[1]')\
         .enableHiveSupport()\
         .getOrCreate()

示例:

导包

import os
import time

from pyspark.sql import SparkSession

绑定指定的python解释器

os.environ['SPARK_HOME'] = '/export/server/spark'
os.environ['PYSPARK_PYTHON'] = '/root/anaconda3/bin/python3'
os.environ['PYSPARK_DRIVER_PYTHON'] = '/root/anaconda3/bin/python3'

创建main函数

if name == 'main':
# 1.创建SparkContext对象
spark = SparkSession.builder
.config('spark.sql.warehouse.dir','hdfs://node1:8020/user/hive/warehouse')
.config('hive.metastore.uris','thrift://node1.itcast.cn:9083')
.appName('pyspark_demo')
.master('local[1]')
.enableHiveSupport()
.getOrCreate()

 # 2.执行sql
 # 查看所有库
 spark.sql( "show databases").show()

# 查看demo1的student表内容
 spark.sql("select * from demo1.student").show()

# 测试是否能建库: 可以
 spark.sql( "create database if not exists spark_demo" )

# 测试是否能在spark_demo建表: 可以
 spark.sql("""create table if not exists spark_demo.stu(id int,name string)""")

# 测试是否可以往spark_demo.stu表插入数据: 可以
 spark.sql("""insert into  spark_demo.stu values(1,'张三'),(2,'李四')""")

# 为了方便查看web页面
 time.sleep(500)

# 3.关闭资源
 spark.stop()
标签: 大数据 spark hive

本文转载自: https://blog.csdn.net/weixin_65694308/article/details/140064192
版权归原作者 困了就倒头睡 所有, 如有侵权,请联系我们删除。

“摸鱼大数据——Spark SQL——Spark on Hive部署”的评论:

还没有评论