Spark SQL
Spark SQL 的格式與資料查詢的運用
SPARK SQL 操作
Spark SQL 並不是將 Spark 作為一個 SQL server 使用,而是指 Spark 的一種資料型態。考慮到 Spark 內的資料是以 RDD 為架構,因此,很適合當作一個資料庫的單元 (例如: table) 來進行操作。同時,由於 RDD 的封閉性 (唯讀) 以及資料的多樣態 (key-value) ,也很適合使用 SQL 指令進行 RDD 資料的操作。
首先,我們先進入 Spark shell,並 import 必要的檔案:
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.1.0
/_/
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_191)
Type in expressions to have them evaluated.
Type :help for more information.
scala> import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.SparkSession
scala> import spark.implicits._
import spark.implicits._接著,我們引入一個 json 格式的檔案,作為輸入 RDD 的資料,該檔案內容如下:
在該檔案中,我們可以看到,對每一個 json 字串,都帶有兩個欄位: name 以及 age。接著,我們把該 json 檔案讀入 Spark 中。由於我們必沒有宣告欄位中數值的型態,Spark 將會透過隱式 (implicits) 轉換,賦予其資料型態。
df 就是透過 json 轉換出來的 RDD,我們可以利用df.show()來看其中內容。其資料結構會顯示像是 SQL 表格的形式。
不只是資料格式為 SQL 的表格,我們也可以透過一些類 SQL 指令對 RDD 進行操作,例如,列出 age > 29 的數值,或是只顯示某一些欄位。
考慮到 json 格式的巢狀結構,我們也可以試著引入一個比較複雜的資料結構,如下所示:
這樣巢狀結構的資料,也可以引入 Spark SQL 中,會是欄位中的多重數值。
更多關於 Spark SQL 的資訊,可以參考官方網站:
Note: SQL 指令紀錄
登入 mySQL,並切換到 spark 資料庫。
創建 table
刪除 table
查看目前的 table
同時插入 table 多筆數值:
將寫好 SQL 指令的文字檔直接執行:
讀取 table 的內容:
計算 table 內某一欄位的有值數目:
Last updated
Was this helpful?