大資料,小小的 tibble
在上一題中,當你把資料複製到 Spark 時,copy_to() 會回傳一個值。這個回傳值是一種特別的 tibble(),本身不包含任何資料。要理解這點,你需要先了解一點 tidyverse 套件儲存資料的方式。Tibble 通常只是 data.frame 的一種變體,印出效果更友善。不過,dplyr 也允許它們代表遠端資料來源(例如資料庫,或像這裡的 Spark)。對於遠端資料集,tibble 物件只會儲存連線到遠端資料。稍後會更詳細說明,但此刻要把握的重點是:即使資料集很大,tibble 物件本身的大小其實很小。
在 Spark 端,資料會儲存在稱為 DataFrame 的變數中。這大致等同於 R 的 data.frame 變數型別。(不過欄位的型別名稱略有不同——例如 numeric 欄位在這裡稱為 DoubleType 欄位。)在整門課程中,除非需要特別區分 data.frame 與 DataFrame,否則會使用一般的「data frame」來稱呼。由於這些型別也與資料庫的資料表相似,有時也會用「table」來描述這種矩形資料。
以 Spark 連線與 Spark 資料框名稱字串呼叫 tbl(),會回傳與你使用 copy_to() 時相同的 tibble 物件。
本練習中你會用到一個實用工具:pryr 套件的 object_size() 函式。它可以顯示某個物件佔用了多少記憶體。
本練習屬於課程
使用 R 的 sparklyr:Spark 入門
練習說明
我們已替你建立好名為 spark_conn 的 Spark 連線。1,000 首歌曲的曲目中繼資料已儲存在 Spark 叢集中的 "track_metadata" 資料表。
- 使用
tbl()連到"track_metadata"資料表,並將結果指定為track_metadata_tbl。 - 在
track_metadata_tbl上使用dim()查看資料集的大小。 - 在
track_metadata_tbl上使用object_size()查看這個 tibble 有多小。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Link to the track_metadata table in Spark
track_metadata_tbl <- ___(___, "___")
# See how big the dataset is
___(___)
# See how small the tibble is
___(___)