==> 什么是parquet
Parquet 是列式存儲的一種文件類型
==> 官網描述:
Apache Parquet is a columnar storage format available to any project in the Hadoop ecosystem, regardless of the choice of data processing framework, data model or programming language
無論數據處理框架,數據模型或編程語言的選擇如何,Apache Parquet都是Hadoop生態系統中任何項目可用的列式存儲格式
==> 由來
Parquet的靈感來自於2010年Google發表的Dremel論文,文中介紹了一種支持嵌套結構的存儲格式,並且使用了列式存儲的方式提升查詢性能,在Dremel論文中還介紹了Google如何使用這種存儲格式實現並行查詢的,如果對此感興趣可以參考論文和開源實現Apache Drill。
==> 特點:
---> 可以跳過不符合條件的數據,只讀取需要的數據,降低 IO 數據量
---> 壓縮編碼可以降低磁盤存儲空間(由於同一列的數據類型是一樣的,可以使用更高效的壓縮編碼(如 Run Length Encoding t Delta Encoding)進一步節約存儲空間)
---> 只讀取需要的列,支持向量運算,能夠獲取更好的掃描性能
---> Parquet 格式是 Spark SQL 的默認數據源,可通過 spark.sql.sources.default 配置
==> parquet 常用操作
---> load 和 save 函數
---> Parquet文件
Parquet 是一個列格式而且用於多個數據處理系統中
Spark SQL 提供支持對於 Parquet 文件的讀寫,也就是自動保存原始 數據的 Schema, 當寫 Parquet 文件時,所有的列被自動轉化為 nullable,因為兼容性的緣故
---- 讀取 Json 格式的數據,將其轉換成 parquet 格式,創建相應的表,使用 SQL 語句查詢
---- Schematic 的合並: 先定義一個簡單的 Schema,然后逐漸增加列描述,用戶可以獲取多個有多個不同 Schema 但相互兼容的 Parquet 文件
---> Json Datasets(兩種寫法)
---> JDBC 方式讀取關系型數據庫中的數據(需要將 JDBC 的驅動加入)
---> 操作 Hive 的表
---- 把 hive 和 hadoop 的配置文件拷貝到sprke 的 conf 目錄下: hive-sit.xml, core-sit.xml, hdfs-sit.xml
---- 啟動 Spark-shell 時 指定mysql 數據庫的驅動程序
---- 使用 Spark Shell 操作 Hive
---- 使用 Spark SQL 操作 Hive