#博学谷IT技术支持#
1. 集成原理
HiveServer2:接收SQL语句,将SQL编译优化执行,翻译为MR程序提交Yarn执行。
MetaStore:提供元数据管理。
Spark On Hive是为了替换Hive的执行引擎,将MR变为Spark RDD程序运行,所以本质是替换HiveServer2。
2. 配置说明
- 校验hive目录下conf目录hive-site.xml中是否有关于metastore的地址配置,如果没有需要新增。
- 将hive-site.xml拷贝到spark的conf目录下
cd /export/server/hive/conf/
cp hive-site.xml /export/server/spark/conf/
- 将mysql连接驱动jar包拷贝到spark的jars目录下
cd /export/server/hive/lib/
cp mysql-connector-java-5.1.32.jar /export/server/spark/jars/
- 启动hadoop和hive的metastore
start-all.sh
cd /export/server/hive/bin
nohup ./hive --service metastore &
jps -m
- 测试是否集成成功
- 此时无法看出是否集成成功
- 解决方案:进入hive客户端,创建库和表并添加数据,在spark-sql客户端上如果可以看得到说明集成成功了,反之亦然。
在hive中执行:
cd /export/server/hive/bin
./hive
create database day12_pyspark;
use day12_pyspark;
create table stu(id int,name string,address string);
insert into table stu values(1,'张三','北京');
select * from stu;
在spark中执行
spark-sql> show databases;
day12_pyspark
default
spark-sql> use day12_pyspark;
Time taken: 0.026 seconds
spark-sql> show tables;
day12_pyspark stu false
select * from stu;
insert into table stu values(2,'李四','上海');
insert into table stu values(3,'王五','北京');
insert into table stu values(4,'赵六','北京');
3. 代码中集成hive
核心代码:
enableHiveSupport():开启和HIVE的整合
config('hive.metastore.uris','thrift://node1:9083'):告知给spark,hive的metastore地址
config('spark.sql.warehouse.dir','hdfs://node1:8020/user/hive/warehouse'):可选,指定默认的家目录,此配置一般与hive的默认家目录保持一致。如果不配置默认位置本地磁盘,建议配置。