54

SparkR と sparklyr の長所/短所に関する概要を知っている人はいますか? Google では満足のいく結果が得られず、どちらもかなり似ているようです。両方を試してみると、SparkR はかなり面倒に見えますが、sparklyr はかなり簡単です (インストールするだけでなく、特に dplyr 入力で使用することもできます)。sparklyr は、dplyr 関数を並列または「通常の」R コードで実行するためにのみ使用できますか?

一番

4

7 に答える 7

36

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 があります。

于 2016-10-11T19:24:56.633 に答える
6

概要と詳細については、ドキュメントを参照してください。ドキュメントから引用すると、「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 のコピーが必要です。

  1. からHadoop winutils.exe をダウンロードします。
  2. winutils.exe を C:\spark-1.6.2\tmp\hadoop\bin にコピーします

または、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です。

これが役立つことを願っています。

乾杯。

于 2016-09-20T12:34:37.007 に答える
6

ラッパーであるため、いくつかの制限がありsparklyrます。たとえばcopy_to()、Spark データフレームの作成に を使用しても、日付として書式設定された列は保持されません。を使用SparkRすると、as.Dataframe()日付が保持されます。

于 2016-11-29T08:47:48.113 に答える
6

sparklyrのハイライトを紹介します。

現在の0.4バージョンでは、任意の並列コードの実行はまだサポートされていません。ただし、この制限を克服するために拡張機能を Scala で簡単に作成できます。 sparkhelloを参照してください。

于 2016-09-27T22:30:35.330 に答える
4

...ハビエルから上記に追加...

これまでのところ、sparklyr は do() をサポートしていないため、mutate や summarise などで許可されていることを実行したい場合にのみ使用できます。内部では、sparklyr は Spark SQL に変換されていますが、そうではありません (まだ?) do() を UDF のようなものに変換します。

また、これまでのところ、sparklyr は unnest() を含む tidyr をサポートしていません。

于 2016-10-04T21:16:49.020 に答える