サンプリングによるデータの縮小
大きなデータセットを扱う場合、常にすべてのデータを使う必要はありません。特にプロジェクトの初期段階でさまざまな試みを行っているときは、データの一部だけを使うことで、より素早く繰り返し作業を進めることができます。sdf_sample() はこれを簡単に実現する関数です。tibble と返す行の割合を引数として受け取ります。今回は非復元抽出でサンプリングします。データセットの10分の1をランダムにサンプリングするには、次のコードを使います。
a_tibble %>%
sdf_sample(fraction = 0.1, replacement = FALSE)
サンプリングの結果はランダムであり、縮小したデータセットを再利用したい場合も多いため、compute() を使って結果を別の Spark データフレームとして保存するのが一般的です。
a_tibble %>%
sdf_sample(<some args>) %>%
compute("sample_dataset")
結果を再現可能にするために、seed 引数で乱数のシードを設定することもできます。シードを設定すると、コードを実行するたびに同じランダムなデータセットが得られます。シードに使う数値は何でも構いません。好きな正の整数を選んでください。
この演習はコースの一部です
sparklyr を使った Spark 入門(R)
演習の手順
Spark への接続は spark_conn として作成済みです。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
___