spark(25)sparksql整合hive

sparksql整合hive

spark整合hive步骤

把node03的hive安装目录下的配置文件hive-site.xml拷贝到每一个spark安装目录下对应的conf文件夹中(3台机器)

cd /kkb/install/hive-1.1.0-cdh5.14.2/conf
cp hive-site.xml /kkb/install/spark/conf/
scp hive-site.xml node01:/kkb/install/spark/conf/
scp hive-site.xml node02:/kkb/install/spark/conf/

把node03的hive的libe目录下的连接mysql驱动的jar包拷贝到spark安装目录下对应的jars文件夹中(3台机器)

cd /kkb/install/hive-1.1.0-cdh5.14.2/lib
cp mysql-connector-java-5.1.38.jar /kkb/install/spark/jars/
scp mysql-connector-java-5.1.38.jar node01:/kkb/install/spark/jars/
scp mysql-connector-java-5.1.38.jar node02:/kkb/install/spark/jars/

可以使用spark-sql脚本 后期执行sql相关的任务

启动hive相关的spark sql

启动整合hive的spark sql

spark-sql \
--master spark://node01:7077 \
--executor-memory 1g \
--total-executor-cores 4 \
--conf spark.sql.warehouse.dir=hdfs://node01:8020/user/hive/warehouse 

启动之后,可以看到如下shell:

image-20200419011931846

我们之前了解过,spark sql是兼容hive sql 的,因此,在这里我们可以像在hive shell那样,进行对hive数据仓库的操作。如:

spark-sql (default)> show databases;
databaseName
db1
default

spark-sql (default)> use db1;

spark-sql (default)> show tables;
database        tableName       isTemporary
db1     hivedemo        false
db1     sparkdemo1      false

spark-sql (default)> select * from sparkdemo1;
id      name    age
1       krystal 21

写运行spark sql语句的脚本

[hadoop@node01 ~]$ mkdir sparkTest
cd sparkTest
vi sparkHiveDemo.sh
#!/bin/sh
#定义sparksql提交脚本的头信息
SUBMITINFO="spark-sql --master spark://node01:7077 --executor-memory 1g --total-executor-cores 2 --conf spark.sql.warehouse.dir=hdfs://node01:8020/user/hive/warehouse" 
#定义一个sql语句
SQL="select * from db1.sparkDemo1;" 
#执行sql语句   类似于 hive -e sql语句
echo "$SUBMITINFO" 
echo "$SQL"
$SUBMITINFO -e "$SQL"

运行脚本:

sh sparkHiveDemo.sh

运行结果为:

id      name    age
1       krystal 21
posted @ 2020-08-25 06:15  Whatever_It_Takes  阅读(163)  评论(0编辑  收藏  举报