開始使用免費開始

使用 parquet 檔案

CSV 檔很適合把矩形資料物件(例如 R 的 data.frame 與 Spark 的 DataFrame)存到磁碟。不過它們讀寫速度很慢,遇到大型資料集就不好用。Parquet 檔提供了效能更高的替代方案。除了可用於 Spark 的資料外,parquet 檔也能搭配 Hadoop 生態系中的其他工具,例如 Shark、Impala、Hive 與 Pig。

嚴格來說,稱作「parquet 檔」並不精確。當你以 parquet 格式儲存資料時,實際上會得到整個目錄的一組檔案。資料會被拆成多個 .parquet 檔,便於分散在多臺機器上儲存,同時也會包含一些中繼資料檔,描述各欄位的內容。

sparklyr 可以使用 spark_read_parquet() 匯入 parquet 檔。這個函式需要一個 Spark 連線、要建立的 Spark DataFrame 名稱字串,以及 parquet 目錄的路徑。請注意,這個函式會把資料直接匯入 Spark,通常會比先匯入 R 再用 copy_to() 從 R 複製到 Spark 還要快。

spark_read_parquet(sc, "a_dataset", "path/to/parquet/dir")

本練習屬於課程

使用 R 的 sparklyr:Spark 入門

檢視課程

練習說明

已為你建立名為 spark_conn 的 Spark 連線。也已為你建立指向 parquet 目錄(R 執行所在檔案系統)的字串 parquet_dir

  • 使用 dir() 列出 parquet 目錄中檔案的「絕對」路徑,並將結果指定給 filenames
    • 第 1 個引數應是你要列出其檔案的目錄 parquet_dir
    • 若要取得絕對(非相對)路徑,請同時傳入 full.names = TRUE
  • 建立一個包含兩欄的 data_frame
    • filename 應包含你剛取得的檔名,但不含目錄部分。可將檔名傳入 basename() 建立此欄。
    • size_bytes 應包含這些檔案的大小。可將檔名傳入 file.size() 建立此欄。
  • 使用 spark_read_parquet() 將 timbre 資料匯入 Spark,並將結果指定給 timbre_tbl
    • 第 1 個引數應是 Spark 連線。
    • 第 2 個引數應是 "timbre"
    • 第 3 個引數應是 parquet_dir

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# parquet_dir has been pre-defined
parquet_dir

# List the files in the parquet dir
filenames <- ___

# Show the filenames and their sizes
data_frame(
  filename = ___,
  size_bytes = ___
)

# Import the data into Spark
timbre_tbl <- ___
編輯並執行程式碼