0. 說明
Spark SQL 的配置基於 Spark 集群搭建 && Hive 的安裝&配置
1. 簡介
Spark SQL 是構建在 Spark Core 模塊之上的四大模塊之一,提供 DataFrame 等豐富 API,可以采用傳統的 SQL 語句進行數學計算。運行期間,會通過 Spark 查詢優化器翻譯產物理執行計划,並行計算后輸出結果。底層計算原理仍然采用 RDD 計算實現。
2. Spark 與 Hive 集成
2.1 在 Spark 配置目錄下創建指向 [hive-site.xml ] 文件的同名符號鏈接
cd /soft/spark/conf
ln -s /soft/hive/conf/hive-site.xml hive-site.xml
2.2 復制 Hive 元數據庫使用的驅動程序到 Spark 的 jars 目錄下,比如 MySQL
cd /soft/hive/lib/ cp mysql-connector-java-5.1.44.jar /soft/spark/jars
2.3 關閉 Hive 配置文件 [hive-site.xml] 文件中版本檢查,否則會報版本不一致異常
[centos@s101 ~]$ cd /soft/hive/conf/
[centos@s101 /soft/hive/conf]$ sudo vi hive-site.xml
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
3. 在 Spark shell 中訪問 Hive
3.0 開啟 ZooKeeper & HDFS & Spark 集群
略
3.1 啟動 spark-shell,觀察輸出內容,打印 Hive 配置信息
spark-shell --master spark://s101:7077
若成功則如下圖所示
3.2 在 Scala 命令行執行如下命令
# 顯示所有數據庫 spark.sql("show databases").show() # 使用指定數據庫 spark.sql("use mydb").show() # 顯示當前數據庫中的數據表 spark.sql("show tables").show() # 查詢 customers 表數據 spark.sql("select * from customers").show(1000,false) # 構造 RDD val rdd1= sc.parallelize(Array((1,"tom1",12) ,(2,"tom2",13) ,(2,"tom3",14) )) # 轉換 RDD 成DataFrame val df = rdd1.toDF("id" , "name" , "age") # 通過 DataFrame select API 實現 SQL 中的 select 語句 df.select("id").show() # 注冊臨時表 df.registerTempTable("_cust") # 通過臨時表進行數據操縱 spark.sql("select * from _cust").show(1000 ,false) ;