SparkR と sparklyr の長所/短所に関する概要を知っている人はいますか? Google では満足のいく結果が得られず、どちらもかなり似ているようです。両方を試してみると、SparkR はかなり面倒に見えますが、sparklyr はかなり簡単です (インストールするだけでなく、特に dplyr 入力で使用することもできます)。sparklyr は、dplyr 関数を並列または「通常の」R コードで実行するためにのみ使用できますか?
一番
SparkR と sparklyr の長所/短所に関する概要を知っている人はいますか? Google では満足のいく結果が得られず、どちらもかなり似ているようです。両方を試してみると、SparkR はかなり面倒に見えますが、sparklyr はかなり簡単です (インストールするだけでなく、特に dplyr 入力で使用することもできます)。sparklyr は、dplyr 関数を並列または「通常の」R コードで実行するためにのみ使用できますか?
一番
SparkR の最大の利点は、R で記述された任意のユーザー定義関数を Spark で実行できることです。
https://spark.apache.org/docs/2.0.1/sparkr.html#applying-user-defined-function
sparklyr は R を SQL に変換するため、mutate
ステートメントでは非常に小さな関数セットしか使用できません。
http://spark.rstudio.com/dplyr.html#sql_translation
その欠点は、拡張機能 ( http://spark.rstudio.com/extensions.html#wrapper_functions ) によって多少軽減されます。
それ以外は、sparklyr が勝者です (私の意見では)。使い慣れた関数を使用するという明らかな利点とは別に、sparklyr には MLlib ( http://spark.rstudio.com/mllib.html ) と上記の拡張機能dplyr
用のはるかに包括的な API があります。
概要と詳細については、ドキュメントを参照してください。ドキュメントから引用すると、「sparklyr パッケージは完全な dplyr バックエンドを提供します」。これは、sparklyr が元の Apache Spark の代替ではなく、その拡張であることを反映しています。
さらに続けて、スタンドアロン コンピューターへのインストール (私は Windows ユーザーです) について話すと、新しい RStudio Preview バージョンをダウンロードしてインストールするか、RStudio シェルで次の一連のコマンドを実行する必要があります。
> devtools::install_github("rstudio/sparklyr")
インストールしていない場合は、readr およびダイジェスト パッケージをインストールします。
install.packages("readr")
install.packages("digest")
library(sparklyr)
spark_install(version = "1.6.2")`
パッケージがインストールされたら、コマンドを使用して Spark のローカル インスタンスに接続します。
sc <- spark_connect(master = "local")
次のようなエラーが表示される場合があります。
C:\spark-1.6.2\tmp\hadoop エラー:
Windows で Spark を実行するには、Hadoop winutils.exe のコピーが必要です。
または、RStudio を使用している場合は、Hadoop winutils.exe の埋め込みコピーを含むRStudio プレビュー リリースをインストールできます。
エラーの解決策が提供されます。github アカウントに移動し、winutils.exe ファイルをダウンロードしてその場所に保存しC:\spark-1.6.2\tmp\hadoop\bin
、spark コンテキストの作成を再試行します。昨年、私は自分のブログに、Windows 環境でのインストールと sparkR の操作について詳しく説明した包括的な投稿を公開しました。
そうは言っても、spark のローカル インスタンスを通常の RStudio にインストールするという面倒な手順を踏むのではなく、 RStudio Previewバージョンを試すことをお勧めします。これにより、sparkcontext を作成する手間が大幅に軽減されます。さらに続けて、sparklyr をどのように使用できるかについての詳細な投稿は、R-bloggersです。
これが役立つことを願っています。
乾杯。
ラッパーであるため、いくつかの制限がありsparklyr
ます。たとえばcopy_to()
、Spark データフレームの作成に を使用しても、日付として書式設定された列は保持されません。を使用SparkR
すると、as.Dataframe()
日付が保持されます。
...ハビエルから上記に追加...
これまでのところ、sparklyr は do() をサポートしていないため、mutate や summarise などで許可されていることを実行したい場合にのみ使用できます。内部では、sparklyr は Spark SQL に変換されていますが、そうではありません (まだ?) do() を UDF のようなものに変換します。
また、これまでのところ、sparklyr は unnest() を含む tidyr をサポートしていません。