Spark SQL - Parquet文件

2018-12-20 17:17 更新

Parquet是一種柱狀格式,由許多數(shù)據(jù)處理系統(tǒng)支持。 具有柱狀存儲(chǔ)的優(yōu)點(diǎn)如下 :

1、列存儲(chǔ)限制IO操作。

2、列式存儲(chǔ)可以獲取您需要訪問(wèn)的特定列。

3、列式存儲(chǔ)占用更少的空間。

4、列式存儲(chǔ)提供更好的摘要數(shù)據(jù),并遵循類型特定的編碼。

Spark SQL提供對(duì)讀取和寫入自動(dòng)捕獲原始數(shù)據(jù)模式的鑲木地板文件的支持。 像JSON數(shù)據(jù)集一樣,parquet文件遵循相同的過(guò)程。

讓我們?cè)倏匆幌旅麨閑mployee.parquet的員工記錄數(shù)據(jù)放在spark-shell正在運(yùn)行的同一目錄中的相同示例。

給定數(shù)據(jù) - 不要將員工記錄的輸入數(shù)據(jù)轉(zhuǎn)換為鑲木地板格式。 我們使用以下命令將RDD數(shù)據(jù)轉(zhuǎn)換為Parquet文件。 放置employee.json文檔,我們?cè)谥暗氖纠杏米鬏斎胛募?/p>

$ 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”)
無(wú)法顯示拼貼文件。 它是一個(gè)目錄結(jié)構(gòu),您可以在當(dāng)前目錄中找到它。 如果要查看目錄和文件結(jié)構(gòu),請(qǐng)使用以下命令。
$ cd employee.parquet/

$ ls
_common_metadata
Part-r-00001.gz.parquet
_metadata
_SUCCESS
以下命令用于讀取,注冊(cè)到表以及對(duì)其應(yīng)用一些查詢。 

打開Spark Shell 

使用以下示例啟動(dòng)Spark shell

$ spark-shell

創(chuàng)建SQLContext對(duì)象 

使用以下命令生成SQLContext。這里,sc表示SparkContext對(duì)象。

scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)
從文本文件讀取輸入 

通過(guò)使用以下語(yǔ)句從名為employee.parquet的parquet文件讀取數(shù)據(jù)來(lái)創(chuàng)建RDD DataFrame。

scala> val parqfile = sqlContext.read.parquet(“employee.parquet”)
將DataFrame存儲(chǔ)到表中 

使用以下命令將DataFrame數(shù)據(jù)存儲(chǔ)到名為employee的表中。在這個(gè)命令之后,我們可以應(yīng)用所有類型的SQL語(yǔ)句。

scala> Parqfile.registerTempTable(“employee”)
員工表已準(zhǔn)備就緒。 現(xiàn)在讓我們使用SQLContext.sql()方法在表上傳遞一些SQL查詢。
選擇DataFrame上的查詢
使用以下命令從employee表中選擇所有記錄。 這里,我們使用變量allrecords來(lái)捕獲所有記錄數(shù)據(jù)。 要顯示這些記錄,請(qǐng)調(diào)用show()方法。

scala> val allrecords = sqlContext.sql("SELeCT * FROM employee")

要查看allrecords 數(shù)據(jù)源的結(jié)果數(shù)據(jù),請(qǐng)使用以下命令。

scala> allrecords.show()
輸出:

+------+--------+----+
|  id  | name   |age |
+------+--------+----+
| 1201 | satish | 25 |
| 1202 | krishna| 28 |
| 1203 | amith  | 39 |
| 1204 | javed  | 23 |
| 1205 | prudvi | 23 |
+------+--------+----+


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)