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 |
+------+--------+----+
spark_sql_data_sources.htm
廣告
© . All rights reserved.