53 votes

SparkR vs sparklyr

Est-ce que quelqu'un a un aperçu des avantages / inconvénients de SparkR par rapport à sparklyr? Google ne donne pas de résultats satisfaisants et les deux semblent assez similaires. En essayant les deux, SparkR semble beaucoup plus encombrant, tandis que sparklyr est assez simple (à la fois à installer mais aussi à utiliser, notamment avec les entrées dplyr). Est-ce que sparklyr ne peut être utilisé que pour exécuter des fonctions dplyr en parallèle ou aussi du code R "normal"?

Meilleures salutations

36voto

Alex Vorobiev Points 2396

Le plus grand avantage de SparkR est la capacité d'exécuter sur Spark des fonctions utilisateur arbitraires écrites en R :

https://spark.apache.org/docs/2.0.1/sparkr.html#applying-user-defined-function

Étant donné que sparklyr traduit le R en SQL, vous ne pouvez utiliser qu'un très petit ensemble de fonctions dans les déclarations mutate :

http://spark.rstudio.com/dplyr.html#sql_translation

Cette lacune est quelque peu atténuée par les Extensions (http://spark.rstudio.com/extensions.html#wrapper_functions).

À part ça, sparklyr est un gagnant (à mon avis). Mis à part l'avantage évident d'utiliser des fonctions familières de dplyr, sparklyr dispose d'une API beaucoup plus complète pour MLlib (http://spark.rstudio.com/mllib.html) et des Extensions mentionnées ci-dessus.

12 votes

Depuis le 2017-06-05, la version non publiée de sparklyr (0.6.0) peut exécuter du 'code R distribué à grande échelle' via la nouvelle fonction spark_apply(). Source : github.com/rstudio/sparklyr/blob/…

6voto

Ashish Points 627

Pour un aperçu et des détails approfondis, vous pouvez vous référer à la documentation. Citant la documentation, "le package sparklyr fournit un backend dplyr complet". Cela reflète que sparklyr n'est PAS un remplacement du spark apache original mais une extension de celui-ci.

Poursuivant, en parlant de son installation (je suis un utilisateur de Windows) sur un ordinateur autonome, vous devrez soit télécharger et installer la nouvelle version de prévisualisation de RStudio, soit exécuter la série de commandes suivante dans le shell de RStudio,

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

installez les packages readr et digest si vous ne les avez pas déjà installés.

install.packages("readr")
install.packages("digest")
library(sparklyr)
spark_install(version = "1.6.2")`

Une fois les packages installés et que vous essayez de vous connecter en vous connectant à une instance locale de Spark en utilisant la commande;

sc <- spark_connect(master = "local")

Vous pourriez voir une erreur telle que

Répertoire bin hadoop par défaut créé sous: C:\spark-1.6.2\tmp\hadoop Erreur:

Pour exécuter Spark sur Windows, vous avez besoin d'une copie de Hadoop winutils.exe:

  1. Téléchargez Hadoop winutils.exe ici
  2. Copiez winutils.exe dans C:\spark-1.6.2\tmp\hadoop\bin

Alternativement, si vous utilisez RStudio, vous pouvez installer la version de prévisualisation de RStudio qui inclut une copie intégrée de Hadoop winutils.exe.

La résolution de l'erreur vous est donnée. Rendez-vous sur le compte Github, téléchargez le fichier winutils.exe et sauvegardez-le à l'emplacement, C:\spark-1.6.2\tmp\hadoop\bin et essayez de recréer le contexte Spark. L'année dernière, j'ai publié un article complet sur mon blog détaillant l'installation et le travail avec SparkR sur l'environnement Windows.

Cela dit, je recommanderais de ne pas passer par ce chemin douloureux d'installer une instance locale de Spark sur le RStudio habituel, plutôt essayez la version de prévisualisation de RStudio. Cela vous évitera grandement la peine de créer le contexte Spark. Poursuivant, voici un article détaillé sur la manière dont sparklyr peut être utilisé sur R-bloggers.

J'espère que cela vous aidera.

Santé.

6voto

Reuben L. Points 1931

Étant une enveloppe, il y a certaines limitations à sparklyr. Par exemple, utiliser copy_to() pour créer un dataframe Spark ne préserve pas les colonnes formatées comme des dates. Avec SparkR, as.Dataframe() préserve les dates.

6voto

Javier Luraschi Points 652

Je peux vous donner les points forts de sparklyr:

Dans la version actuelle 0.4, il ne prend pas encore en charge l'exécution de code parallèle arbitraire. Cependant, des extensions peuvent être facilement écrites en Scala pour surmonter cette limitation, voir sparkhello.

0 votes

Votre lien vers sparklyr est incorrect. Devrait être: spark.rstudio.com

1 votes

0.6 prend désormais en charge l'exécution de code parallèle arbitraire.

4voto

Carl F. Points 47

... ajoutant à ce qui précède de Javier...

Je n'ai pas encore trouvé, sparklyr ne prend pas en charge do(), ce qui le rend utile uniquement lorsque vous souhaitez faire ce qui est permis par mutate, summarise, etc. Sous le capot, sparklyr se transforme en Spark SQL, mais ne transforme pas encore do() en quelque chose comme une UDF.

Aussi, je n'ai pas encore trouvé, sparklyr ne prend pas en charge tidyr, y compris unnest().

0 votes

Il existe une extension pour aider à combler le fossé tidyr : mitre.github.io/sparklyr.nested

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X