赞
踩
Spark SQL整合hive就是获取hive表中的元数据信息(在mysql中),然后通过Spark SQL来操作数据。
整合步骤:
1、拷贝hive配置文件到spark
- <property>
- <name>javax.jdo.option.ConnectionURL</name>
- <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
- <description>JDBC connect string for a JDBC metastore</description>
- </property>
具体配置如下:
- <property>
- <name>hive.metastore.schema.verification</name>
- <value>false</value>
- </property>
- <property>
- <name>hive.server2.authentication</name>
- <value>NOSASL</value>
- </property>
- <property>
- <name>hive.metastore.local</name>
- <value>false</value>
- </property>
- # 添加metastore的url配置(对应hive安装节点,我的为master节点)
- <property>
- <name>hive.metastore.uris</name>
- <value>thrift://master:9000</value>
- </property>
- scp hive-site.xml slave1:/usr/local/spark/conf/
-
- scp hive-site.xml slave2:/usr/local/spark/conf/
2、拷贝hive中mysql驱动到spark
在master中hive的lib目录下执行以下命令(因为在安装hive时已经拷贝了mysql驱动):
切换到hive的lib目录下查看mysql驱动包:
cd /usr/local/apache-hive-1.2.2-bin/lib/
- cp mysql-connector-java-5.1.37.jar /usr/local/spark/jars/
- scp mysql-connector-java-5.1.37.jar slave1:/usr/local/spark/jars/
- scp mysql-connector-java-5.1.37.jar slave2:/usr/local/spark/jars/
3、启动服务
[root@master ~]# start-all.sh
#查看状态
service mysqld status
#启动
service mysqld start
bin/hive --service metastore
- cd /usr/local/apache-hive-1.2.2-bin/
- bin/hive
- [root@master ~]# cd /usr/local/spark/sbin
- [root@master sbin]# ./start-all.sh
启动spark-shell
- [root@master ~]# cd /usr/local/spark/bin
-
- [root@master spark]# ./spark-shell
-
- [root@master ~]# cd /usr/local/spark/bin
-
- [root@master spark]# ./spark-shell
在spark安装目录的bin目录下:
启动spark-sql
bin/spark-sql
#查看数据库
show databases;
#使用数据库
use spark_us_covid
#查看表
show tables;
#查看表数据select * from top10_cases_state;
启动spark-shell进行查询:
spark.sql("show databases").collect();
到此,spark整合hive全部完成。本次使用的hive为1.2.2的版本,spark为spark-2.4.7-hadoop2.7。而我的虚拟机中hadoop版本为2.8,可以向下兼容。
不存在hive与spark不兼容的情况,所以在遇到这种问题时可以考虑自己的spark jars包中是否有hive的相关jar包。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。