1. 程式人生 > >第9章 Spark SQL

第9章 Spark SQL

三大功能: 1)可以從各種結構化資料來源(JSON、Hive、Parquet)中讀取資料 2)支援在Spark程式內使用SQL語句進行資料查詢,也支援通過標準資料庫聯結器(JDBC/ODBC)連線Spark SQL進行查詢 3)支援SQL與常規程式碼高度整合,包括連線RDD與SQL表、公開的自定義SQL函式介面

Spark SQL提供的SchemaRDD,存放Row物件的RDD,包含記錄的結構資訊,可以執行SQL查詢 在這裡插入圖片描述

9.1 連線Spark SQL Spark SQL可以包含Hive支援,也可以不包含 引入依賴,支援Hive:spark-hive-版本,不支援Hive:spark-sql-版本 Spark SQL程式設計入口,支援Hive:HiveContext,不支援Hive:SQLContext 把Spark SQL連線到一個部署好的Hive上。

9.2 在運用中使用Spark SQL

基於已有的SparkContext創建出一個HiveContext,使用HiveContext創建出表示結構化資料的SchemaRDD,並且使用SQL或是類似map()的普通RDD操作來操作這些SchemaRDD。

9.2.1 初始化Spark SQL

hiveCtx = HiveContext(sc)

9.2.2 基本查詢示例

要在一張資料表上進行查詢,需要呼叫HiveContext或者SQLContext中的sql()方法。

9.2.3 SchemaRDD 讀取資料或執行查詢都會返回SchemaRDD。與表概念類似。 可以把任意SchemaRDD註冊為臨時表,這樣就可以使用HiveContext.sql來對它進行查詢了。

使用Row物件 Row物件表示SchemaRDD中的記錄,其本質就是一個定長的欄位陣列。

9.2.4 快取

使用專門的hiveCtx.cacheTable(“tableName”)進行快取。 也可以使用HiveQL和SQL語句來快取表,只需要執行CACHE TABLE tableName 和 UNCACHE TABLE tableName來快取表或者刪除已有的快取即可。

9.3 讀取和儲存資料

9.3.1 Apache Hive

9.3.2 Parquet 流行的列式儲存格式。 通過HiveContext.parquestFile來讀取資料。 使用saveAsParquestFile()把SchemaRDD的內容以Parquest格式儲存。

9.3.3 JSON

9.3.4 基於RDD

9.4 JDBC/ODBC伺服器

9.5 使用者自定義函式

9.6 Spark SQL效能

9.7 總結