始める無料で始める

ポップコーンを食べながら2本立て上映

前の2つのチャプターで学んだ dplyr のメソッドは、Spark の SQL インターフェースを使用しています。つまり、R コードは Spark に渡される前に SQL コードに変換されます。基本的なデータ操作には優れた方法ですが、より複雑な処理を行おうとすると問題が生じます。たとえば、列の平均は計算できますが、中央値は計算できません。以下は、チャプター1で完了した「列の集計」演習の例です。

track_metadata_tbl %>%
  summarize(mean_duration = mean(duration)) #OK
track_metadata_tbl %>%
  summarize(median_duration = median(duration))

sparklyr には、次の2つのチャプターで取り上げる「ネイティブ」インターフェースも2種類あります。ネイティブとは、SQL への変換を行わずに Java や Scala コードを直接呼び出して Spark ライブラリにアクセスすることを意味します。sparklyr は、sdf_ プレフィックスを持つ関数を通じて Spark DataFrame API(アプリケーション・プログラミング・インターフェース)をサポートしています。また、ft_ で始まる「特徴量変換」関数や ml_ で始まる「機械学習」関数を通じて、Spark の機械学習ライブラリである MLlib へのアクセスもサポートしています。

R と Spark を使う上での重要な考え方の違いとして、Spark は R よりも変数の型に対してはるかに厳格です。ほとんどのネイティブ関数は DoubleType の入力を受け取り、DoubleType の出力を返します。DoubleType は R の numeric ベクトル型に相当する Spark の型です。sparklyrnumeric から DoubleType への変換を自動的に処理しますが、logicalinteger のデータを numeric に変換したり元に戻したりするのはユーザー(つまりあなた!)の役割です。

次のうち、正しい記述はどれですか?

  1. sparklyrdplyr メソッドは、Spark で実行する前にコードを Scala コードに変換する。
  2. R コードを SQL コードに変換することで、サポートされる計算の種類が制限される。
  3. ほとんどの Spark MLlib モデリング関数は DoubleType の入力を必要とし、DoubleType の出力を返す。
  4. ほとんどの Spark MLlib モデリング関数は IntegerType の入力を必要とし、BooleanType の出力を返す。

この演習はコースの一部です

sparklyr を使った Spark 入門(R)

コースを見る

実践的なインタラクティブ演習

理論を実践に変える、インタラクティブな演習のひとつをお試しください

演習を開始する