web-dev-qa-db-ja.com

SparkR vs sparklyr

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

ベスト

51
koVex

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が勝者です(私の意見では)。おなじみのdplyr関数を使用することの明らかな利点の他に、sparklyrにはMLlib用のより包括的なAPI( http://spark.rstudio.com/mllib.html )と言及された拡張機能があります。上記。

34
Alex Vorobiev

概要と詳細については、 documentation を参照してください。ドキュメントから引用すると、「sparklyrパッケージは完全なdplyrバックエンドを提供します」。これは、sparklyrが[〜#〜] not [〜#〜]であり、元のApache sparkしかしそれへの拡張。

さらに続けて、スタンドアロンコンピューターへのインストール(私はWindowsユーザー)について話します。新しいRStudioプレビューバージョンをダウンロードしてインストールするか、RStudio Shellで次の一連のコマンドを実行する必要があります。

> devtools::install_github("rstudio/sparklyr")

リーダーパッケージとダイジェストパッケージをインストールしていない場合はインストールします。

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の下にデフォルトのhadoop binディレクトリを作成エラー:

WindowsでSparkを実行するには、Hadoop winutils.exeのコピーが必要です。

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

あるいは、RStudioを使用している場合は、Hadoop winutils.exeの埋め込みコピーを含む RStudio Preview Release をインストールできます。

エラー解決はあなたに与えられます。 githubアカウントに移動し、winutils.exeファイルをダウンロードして、C:\spark-1.6.2\tmp\hadoop\binそしてsparkコンテキストをもう一度作成してみてください。昨年、私は blog に包括的なポストを公開しました。

そうは言っても、このsparkの通常のRStudio上のローカルインスタンスをインストールするという苦痛なパスを通過するのではなく、 RStudioプレビュー バージョンを試してみることをお勧めします。さらに、sparklyrの使用方法に関する詳細な投稿 R-bloggers があります。

これがお役に立てば幸いです。

乾杯。

5
mnm

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

4
Reuben L.

sparklyr のハイライトを提供できます:

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

3
Javier Luraschi

...上記にJavierから追加しています...

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

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

3
Carl F.

sparkRに有利な答えがあまりないので、初心者としてそれらの両方を学び始めたことに言及したいと思います。sparkRapiは標準で使用するものとより密接に関連していることがわかります。 scala-spark。私がそれらを研究するとき、私はrstudioとscalaを使用したいことを意味します。sparkrとsparklyrのどちらかを選択する必要があります。 scala-spark apiと一緒にsparkRを学習することは、少なくとも私の観点でははるかに異なるsparklyrを学習するよりも労力が少ないようです。ただし、sparklyrはより強力に見えます。だから私にとっては、コミュニティからより多くのサポートを受けてより強力で一般的に使用されているライブラリを使用したいのか、少なくとも選択に関する私の視点であるscala-sparkのようなより類似したAPIを妥協して使用したいのかという質問です。

2
Tomer Ben David

最近、SparkR対sparklyrの利点/欠点の概要を書きました。これは興味深いかもしれません: https://eddjberry.netlify.com/post/2017-12-05-sparkr-vs-sparklyr/

投稿の上部に table があり、さまざまな基準の違いの大まかな概要を示します。

sparklyrSparkRよりも望ましいと結論付けました。最も顕著な利点は次のとおりです。

  1. dpylrとの互換性によるデータ操作の改善
  2. より良い関数の命名規則
  3. MLモデルを迅速に評価するための優れたツール
  4. Spark DataFrameで任意のコードを簡単に実行できます
1
Eddd