# Parquet文件
Parquet是一種柱狀(columnar)格式,可以被許多其它的數據處理系統支持。Spark SQL提供支持讀和寫Parquet文件的功能,這些文件可以自動地保留原始數據的模式。
## 加載數據
```scala
// sqlContext from the previous example is used in this example.
// createSchemaRDD is used to implicitly convert an RDD to a SchemaRDD.
import sqlContext.createSchemaRDD
val people: RDD[Person] = ... // An RDD of case class objects, from the previous example.
// The RDD is implicitly converted to a SchemaRDD by createSchemaRDD, allowing it to be stored using Parquet.
people.saveAsParquetFile("people.parquet")
// Read in the parquet file created above. Parquet files are self-describing so the schema is preserved.
// The result of loading a Parquet file is also a SchemaRDD.
val parquetFile = sqlContext.parquetFile("people.parquet")
//Parquet files can also be registered as tables and then used in SQL statements.
parquetFile.registerTempTable("parquetFile")
val teenagers = sqlContext.sql("SELECT name FROM parquetFile WHERE age >= 13 AND age <= 19")
teenagers.map(t => "Name: " + t(0)).collect().foreach(println)
```
## 配置
可以在SQLContext上使用setConf方法配置Parquet或者在用SQL時運行`SET key=value`命令來配置Parquet。
Property Name | Default | Meaning
--- | --- | ---
spark.sql.parquet.binaryAsString | false | 一些其它的Parquet-producing系統,特別是Impala和其它版本的Spark SQL,當寫出Parquet模式的時候,二進制數據和字符串之間無法區分。這個標記告訴Spark SQL將二進制數據解釋為字符串來提供這些系統的兼容性。
spark.sql.parquet.cacheMetadata | true | 打開parquet元數據的緩存,可以提高靜態數據的查詢速度
spark.sql.parquet.compression.codec | gzip | 設置寫parquet文件時的壓縮算法,可以接受的值包括:uncompressed, snappy, gzip, lzo
spark.sql.parquet.filterPushdown | false | 打開Parquet過濾器的pushdown優化。因為已知的Paruet錯誤,這個特征默認是關閉的。如果你的表不包含任何空的字符串或者二進制列,打開這個特征仍是安全的
spark.sql.hive.convertMetastoreParquet | true | 當設置為false時,Spark SQL將使用Hive SerDe代替內置的支持
- Introduction
- 快速上手
- Spark Shell
- 獨立應用程序
- 開始翻滾吧!
- RDD編程基礎
- 基礎介紹
- 外部數據集
- RDD 操作
- 轉換Transformations
- map與flatMap解析
- 動作Actions
- RDD持久化
- RDD容錯機制
- 傳遞函數到 Spark
- 使用鍵值對
- RDD依賴關系與DAG
- 共享變量
- Spark Streaming
- 一個快速的例子
- 基本概念
- 關聯
- 初始化StreamingContext
- 離散流
- 輸入DStreams
- DStream中的轉換
- DStream的輸出操作
- 緩存或持久化
- Checkpointing
- 部署應用程序
- 監控應用程序
- 性能調優
- 減少批數據的執行時間
- 設置正確的批容量
- 內存調優
- 容錯語義
- Spark SQL
- 概述
- SparkSQLvsHiveSQL
- 數據源
- RDDs
- parquet文件
- JSON數據集
- Hive表
- 數據源例子
- join操作
- 聚合操作
- 性能調優
- 其他
- Spark SQL數據類型
- 其它SQL接口
- 編寫語言集成(Language-Integrated)的相關查詢
- GraphX編程指南
- 開始
- 屬性圖
- 圖操作符
- Pregel API
- 圖構造者
- 部署
- 頂點和邊RDDs
- 圖算法
- 例子
- 更多文檔
- 提交應用程序
- 獨立運行Spark
- 在yarn上運行Spark
- Spark配置
- RDD 持久化