Parquet是一種柱狀格式,由許多數(shù)據(jù)處理系統(tǒng)支持。 具有柱狀存儲的優(yōu)點如下 :
1、列存儲限制IO操作。
2、列式存儲可以獲取您需要訪問的特定列。
3、列式存儲占用更少的空間。
4、列式存儲提供更好的摘要數(shù)據(jù),并遵循類型特定的編碼。
Spark SQL提供對讀取和寫入自動捕獲原始數(shù)據(jù)模式的鑲木地板文件的支持。 像JSON數(shù)據(jù)集一樣,parquet文件遵循相同的過程。
讓我們再看一下名為employee.parquet的員工記錄數(shù)據(jù)放在spark-shell正在運行的同一目錄中的相同示例。
給定數(shù)據(jù) - 不要將員工記錄的輸入數(shù)據(jù)轉(zhuǎn)換為鑲木地板格式。 我們使用以下命令將RDD數(shù)據(jù)轉(zhuǎn)換為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”)無法顯示拼貼文件。 它是一個目錄結(jié)構(gòu),您可以在當前目錄中找到它。 如果要查看目錄和文件結(jié)構(gòu),請使用以下命令。
$ cd employee.parquet/ $ ls _common_metadata Part-r-00001.gz.parquet _metadata _SUCCESS以下命令用于讀取,注冊到表以及對其應(yīng)用一些查詢。
使用以下示例啟動Spark shell
$ spark-shell創(chuàng)建SQLContext對象
使用以下命令生成SQLContext。這里,sc表示SparkContext對象。
scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)從文本文件讀取輸入
通過使用以下語句從名為employee.parquet的parquet文件讀取數(shù)據(jù)來創(chuàng)建RDD DataFrame。
scala> val parqfile = sqlContext.read.parquet(“employee.parquet”)將DataFrame存儲到表中
使用以下命令將DataFrame數(shù)據(jù)存儲到名為employee的表中。在這個命令之后,我們可以應(yīng)用所有類型的SQL語句。
scala> Parqfile.registerTempTable(“employee”)員工表已準備就緒。 現(xiàn)在讓我們使用SQLContext.sql()方法在表上傳遞一些SQL查詢。
scala> val allrecords = sqlContext.sql("SELeCT * FROM employee")
要查看allrecords 數(shù)據(jù)源的結(jié)果數(shù)據(jù),請使用以下命令。
scala> allrecords.show()輸出:
+------+--------+----+ | id | name |age | +------+--------+----+ | 1201 | satish | 25 | | 1202 | krishna| 28 | | 1203 | amith | 39 | | 1204 | javed | 23 | | 1205 | prudvi | 23 | +------+--------+----+
更多建議: