21 sparkSQL

sparkSQL服务架构

image.png

sparkSQL与Hive集成

1需要配置的项目

1、拷贝hive的配置文件 Hive-site.xml到spark的conf目录
删掉hive和hbase配置项

<property>
        <name>hbase.zookeeper.quorum</name>
        <value>bigdata-pro01.kfk.com,bigdata-pro02.kfk.com,bigdata-pro03.kfk.com</value>
    </property>

检查hive-site.xml中的metastore的url的配置,这项配置不会的可以到hive的hive-default.xml.template中,value值和metastore的port都可以去官网中去找https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties

集成hive的2中方法,一个是通过连接mysql的metastore来集成,一个是通过hive的metastore服务来集成,此方案需要需要配置下面的配置项

    <property>
      <name>hive.metastore.uris</name>
      <value>thrift://bigdata-pro01.kfk.com:9083</value>
    </property>

具体参考:https://www.cnblogs.com/juncaoit/p/6545092.html

2、拷贝Hive的Mysql的jar包到spark的jars目录下
3、检查spark-env.xml文件中的hadoop的配置项,必须开启

2需要启动的服务

1、sudo service mysqld start
2、bin/hive --service metastore

3操作测试
## 开启hive
bin/hive
## 创建一个库
create database kfk;
use kfk;
## 创建一个表
CREATE TABLE IF NOT EXISTS test(
userid string ,
username string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS textfile ;
## 在/opt/datas下创建文本kfk.txt,内容如下
001 kfk
002 mysql
003 spark
004 java
## 捞取文件内容到hive中sql
load data local inpath "/opt/datas/kfk.txt" into table test;
## 开启 spark-shell
bin/spark-shell
## 在spark上查询
spark.sql("select * from default.stu").show
## 用spark写入数据库中
import java.util.Properties//导包
val pro = new Properties()//创建properties类
pro.setProperty("driver","com.mysql.jdbc.Driver")//设置driver类
val df = spark.sql("select * from stu");//通过sparksql,获取df
//写入api,第一个参数是jdbc的url,包括数据库名和用户名密码
//第二个参数是表名  第三个参数是properties对象
df.write.jdbc("jdbc:mysql://bigdata-pro03.kfk.com/spark?user=root&password=123456","test1",pro)
image.png

推荐阅读更多精彩内容