ポップコーンを食べながら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 の型です。sparklyr は numeric から DoubleType への変換を自動的に処理しますが、logical や integer のデータを numeric に変換したり元に戻したりするのはユーザー(つまりあなた!)の役割です。
次のうち、正しい記述はどれですか?
sparklyrのdplyrメソッドは、Spark で実行する前にコードを Scala コードに変換する。- R コードを SQL コードに変換することで、サポートされる計算の種類が制限される。
- ほとんどの Spark MLlib モデリング関数は
DoubleTypeの入力を必要とし、DoubleTypeの出力を返す。 - ほとんどの Spark MLlib モデリング関数は
IntegerTypeの入力を必要とし、BooleanTypeの出力を返す。
この演習はコースの一部です
