- Spark SQL 教程
- Spark SQL - 首頁
- Spark - 簡介
- Spark - RDD
- Spark - 安裝
- Spark SQL - 簡介
- Spark SQL - DataFrame
- Spark SQL - 資料來源
- Spark SQL 有用資源
- Spark SQL - 快速指南
- Spark SQL - 有用資源
- Spark SQL - 討論
Spark SQL - Parquet 檔案
Parquet 是一種列式儲存格式,許多資料處理系統都支援它。列式儲存的優勢如下:
列式儲存限制了 IO 操作。
列式儲存可以僅獲取您需要訪問的特定列。
列式儲存佔用更少的空間。
列式儲存提供更好的資料彙總,並遵循特定型別的編碼。
Spark SQL 支援讀取和寫入 Parquet 檔案,它會自動捕獲原始資料的模式。與 JSON 資料集一樣,Parquet 檔案也遵循相同的流程。
讓我們再來看一下同一個employee記錄資料的示例,名為employee.parquet,它位於執行 spark-shell 的同一目錄中。
給定資料 - 不需要費心將員工記錄的輸入資料轉換為 Parquet 格式。我們使用以下命令將 RDD 資料轉換為 Parquet 檔案。放置employee.json文件,我們已將其用作先前示例中的輸入檔案。
$ spark-shell Scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc) Scala> val employee = sqlContext.read.json(“emplaoyee”) Scala> employee.write.parquet(“employee.parquet”)
無法向您展示 Parquet 檔案。它是一個目錄結構,您可以在當前目錄中找到它。如果您想檢視目錄和檔案結構,請使用以下命令。
$ cd employee.parquet/ $ ls _common_metadata Part-r-00001.gz.parquet _metadata _SUCCESS
以下命令用於讀取、註冊到表中以及對其應用一些查詢。
開啟 Spark Shell
使用以下示例啟動 Spark shell
$ spark-shell
建立 SQLContext 物件
使用以下命令生成 SQLContext。這裡,sc表示 SparkContext 物件。
scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)
從文字檔案讀取輸入
使用以下語句,透過讀取名為employee.parquet的 Parquet 檔案中的資料來建立一個 RDD DataFrame。
scala> val parqfile = sqlContext.read.parquet(“employee.parquet”)
將 DataFrame 儲存到表中
使用以下命令將 DataFrame 資料儲存到名為employee的表中。執行此命令後,我們可以對其應用所有型別的 SQL 語句。
scala> Parqfile.registerTempTable(“employee”)
employee 表已準備就緒。現在讓我們使用SQLContext.sql()方法對錶執行一些 SQL 查詢。
對 DataFrame 執行 Select 查詢
使用以下命令從employee表中選擇所有記錄。這裡,我們使用變數allrecords來捕獲所有記錄資料。要顯示這些記錄,請對其呼叫show()方法。
scala> val allrecords = sqlContext.sql("SELeCT * FROM employee")
要檢視allrecords DataFrame 的結果資料,請使用以下命令。
scala> allrecords.show()
輸出
+------+--------+----+ | id | name |age | +------+--------+----+ | 1201 | satish | 25 | | 1202 | krishna| 28 | | 1203 | amith | 39 | | 1204 | javed | 23 | | 1205 | prudvi | 23 | +------+--------+----+