認識 Parquet

使用 PySpark 清理資料

Mike Metzger

Data Engineering Consultant

CSV 的難題

  • 無預先定義的結構
  • 巢狀資料需特別處理
  • 編碼格式受限
使用 PySpark 清理資料

Spark 與 CSV 檔

  • 解析速度慢
  • 無法過濾檔案(不支援「predicate pushdown」)
  • 中間處理都需重新定義結構
使用 PySpark 清理資料

Parquet 格式

  • 欄式資料格式
  • 受 Spark 與其他資料處理框架支援
  • 支援 predicate pushdown
  • 自動保存結構資訊
使用 PySpark 清理資料

操作 Parquet

讀取 Parquet 檔

df = spark.read.format('parquet').load('filename.parquet')
df = spark.read.parquet('filename.parquet')

寫入 Parquet 檔

df.write.format('parquet').save('filename.parquet')
df.write.parquet('filename.parquet')
使用 PySpark 清理資料

Parquet 與 SQL

以 Parquet 作為 SparkSQL 作業的後端儲存

flight_df = spark.read.parquet('flights.parquet')
flight_df.createOrReplaceTempView('flights')
short_flights_df = spark.sql('SELECT * FROM flights WHERE flightduration < 100')
使用 PySpark 清理資料

一起來練習吧!

使用 PySpark 清理資料

Preparing Video For Download...