用抽樣縮小資料量
處理大型資料集時,你通常不需要每次都用到全部資料。特別是在專案初期、還在嘗試各種做法時,先用較小的子集來迭代,往往能加快速度。sdf_sample() 提供了方便的方式。它接受一個 tibble,以及要回傳的列數比例。本題需要進行「不放回」抽樣。若要隨機抽樣資料集的十分之一,可以使用以下程式碼:
a_tibble %>%
sdf_sample(fraction = 0.1, replacement = FALSE)
由於抽樣結果是隨機的,而你很可能會重複使用縮小後的資料集,通常會搭配 compute() 將結果儲存成另一個 Spark data frame。
a_tibble %>%
sdf_sample(<some args>) %>%
compute("sample_dataset")
為了讓結果可重現,你也可以透過 seed 參數設定隨機數種子。這能確保每次執行程式碼都得到相同的隨機資料集。種子數字用哪個都可以;選一個你喜歡的正整數即可。
本練習屬於課程
使用 R 的 sparklyr:Spark 入門
練習說明
已為你建立名為 spark_conn 的 Spark 連線。連到 Spark 中曲目中繼資料的 tibble 已預先定義為 track_metadata_tbl。
- 使用
sdf_sample()對曲目中繼資料進行 1% 的不放回抽樣。- 在
seed參數傳入20000229以設定隨機種子。
- 在
- 計算結果,並將其儲存為名為
"sample_track_metadata"的資料表。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# track_metadata_tbl has been pre-defined
track_metadata_tbl
track_metadata_tbl %>%
# Sample the data without replacement
___ %>%
# Compute the result
___