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:
我们之前了解过,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