1. 学ぶ
  2. /
  3. コース
  4. /
  5. sparklyr を使った Spark 入門(R)

Connected

演習

ソート方法の比較:`sdf_sort()` vs `arrange()`

この章ではここまで、Spark の MLlib が提供する特徴量変換関数をいくつか確認してきました。sparklyr では、Spark DataFrame API を活用した関数にもアクセスできます。

dplyr でティブルを並び替えるには、arrange() を使います。また、Spark の DataFrame API を使って sdf_sort() でも並び替えが可能です。この関数は並び替えの基準となる列名を文字ベクトルで受け取ります。なお、現時点では昇順のみがサポートされています。

例として、まず列 x で並び替え、同じ値がある場合は列 y、さらに列 z の順で並び替えるには、次のように dplyr と Spark DataFrame の両方のアプローチを比べてみましょう。

a_tibble %>%
  arrange(x, y, z)
a_tibble %>%
  sdf_sort(c("x", "y", "z"))

どちらの方法が速いかを確認するには、arrange() と sdf_sort() の両方を試してみてください。コードの実行時間を測定するには、同名パッケージの microbenchmark() でコードを囲みます。

microbenchmark({
  # your code
})

コードの速度プロファイリングについて詳しくは、Writing Efficient R Code コースで学べます。

指示

100 XP

Spark への接続は spark_conn として作成済みです。Spark に保存されたトラックのメタデータに紐付けられたティブルは、track_metadata_tbl として事前に定義されています。

  • microbenchmark() を使って、以下の操作にかかる時間を比較しましょう。
    • arrange() を使って、track_metadata_tbl の行を year、artist_name、release、title の順に並び替えます。
    • 結果を収集します。
    • 今度は arrange() の代わりに sdf_sort() を使って、同じ操作を行います。列名はクォートで囲むことを忘れずに。