將資料複製到 Spark
在你能用 Spark 做任何實際工作之前,必須先把資料放進去。sparklyr 提供一些函式(例如 spark_read_csv())可將 CSV 檔案讀入 Spark。更一般地說,能從 R 複製資料到 Spark 也很實用。這可以用 dplyr 的 copy_to() 函式完成。要特別留意:複製資料本質上很慢。事實上,在處理大型資料集時,許多效能最佳化策略,都是設法避免把資料從一個位置複製到另一個位置。
copy_to() 需要兩個引數:Spark 連線(dest),以及要複製到 Spark 的資料框(df)。
把資料複製到 Spark 之後,你可能會想確認是否真的成功。你可以使用 src_tbls() 列出儲存在 Spark 中的所有資料框;它只需要一個 Spark 連線引數(x)。
在整個課程中,你會探索來自 Million Song Dataset 的曲目中繼資料。雖然 Spark 可以輕鬆擴展到遠超過 1,000,000 筆資料,但為了保持操作簡潔且介面回應快,你將使用 1,000 首曲目的子集。為了釐清術語:「track」指的是資料集中的一列。對於這個 1,000 筆曲目的資料集來說,這等同於一首「song」(不過完整的百萬列資料集中有些歌曲是重複的)。
本練習屬於課程
使用 R 的 sparklyr:Spark 入門
練習說明
track_metadata(包含 1,000 首曲目的歌曲名稱、藝人名稱與其他中繼資料)已在你的工作環境中預先定義。
- 使用
str()探索track_metadata資料集。 - 連線到本機的 Spark 叢集,並把連線物件存成
spark_conn。 - 使用
copy_to()將track_metadata複製到 Spark 叢集。 - 使用
src_tbls()檢視 Spark 中可用的資料框。 - 中斷與 Spark 的連線。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Load dplyr
___
# Explore track_metadata structure
___
# Connect to your Spark cluster
spark_conn <- spark_connect("___")
# Copy track_metadata to Spark
track_metadata_tbl <- ___(___, ___, overwrite = TRUE)
# List the data frames available in Spark
___(___)
# Disconnect from Spark
spark_disconnect(___)