web-dev-qa-db-fra.com

SparkR vs sparklyr

Quelqu'un a-t-il un aperçu des avantages/inconvénients de SparkR par rapport à sparklyr? Google ne donne aucun résultat satisfaisant et les deux semblent assez similaires. En essayant les deux, SparkR semble beaucoup plus lourd, alors que sparklyr est assez simple (à installer mais aussi à utiliser, en particulier avec les entrées dplyr). Sparklyr peut-il uniquement être utilisé pour exécuter des fonctions dplyr en parallèle ou également du code R "normal"?

Meilleur

51
koVex

Le principal avantage de SparkR réside dans sa capacité à exécuter sur Spark des fonctions arbitraires définies par l'utilisateur écrites en R:

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

Comme sparklyr traduit R en SQL, vous ne pouvez utiliser qu'un très petit ensemble de fonctions dans les instructions mutate:

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

Ce problème est quelque peu atténué par les extensions ( http://spark.rstudio.com/extensions.html#wrapper_functions ).

À part cela, sparklyr est un gagnant (à mon avis). Outre l'avantage évident d'utiliser des fonctions dplyr bien connues, sparklyr dispose d'une API beaucoup plus complète pour MLlib ( http://spark.rstudio.com/mllib.html ) et des extensions mentionnées. au dessus de.

34
Alex Vorobiev

Pour la vue d'ensemble et les détails, vous pouvez vous référer à documentation . Citant la documentation, "le paquet sparklyr fournit un backend dplyr complet". Cela indique que sparklyr est [~ # ~] pas [~ # ~] un remplacement de l’Apache d’origine spark mais une extension à cela.

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

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

installez readr et digérez les paquets si vous ne les avez pas 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, connectez-vous à l'instance locale de spark à l'aide de la commande;

sc <- spark_connect(master = "local")

Vous pouvez voir une erreur telle que

Créé le répertoire bin hadoop par défaut sous: C:\spark-1.6.2\tmp\hadoop Erreur:

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

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

Si vous utilisez RStudio, vous pouvez également installer RStudio Preview Release , qui comprend une copie intégrée de Hadoop winutils.exe.

La résolution d'erreur vous est donnée. Rendez-vous sur le compte github, téléchargez le fichier winutils.exe et enregistrez-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 l'utilisation de sparkR sous Windows.

Cela dit, je recommanderais de ne pas suivre ce chemin pénible d'installation d'une instance locale de spark sur le RStudio habituel, essayez plutôt la version RStudio Preview . Il Cela vous évitera énormément la création du contexte spark. Pour continuer, voici un article détaillé sur la manière dont sparklyr peut être utilisé R-bloggers .

J'espère que ça aide.

À votre santé.

5
mnm

Étant un wrapper, il y a quelques limitations à sparklyr. Par exemple, l'utilisation de copy_to() pour créer un cadre de données Spark) ne conserve pas les colonnes au format de date. Avec SparkR, as.Dataframe() préserve les dates .

4
Reuben L.

Je peux vous donner les points saillants pour sparklyr :

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

3
Javier Luraschi

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

Ce que je peux trouver jusqu’à présent, sparklyr ne prend pas en charge do (), ce qui le rend utile uniquement lorsque vous souhaitez effectuer les opérations permises par mutation, synthèse, etc. Sous le capot, sparklyr est en train de se transformer en Spark SQL , mais ne transforme pas (encore) do () en quelque chose comme un fichier UDF.

Aussi, que je peux trouver jusqu'à présent, sparklyr ne supporte pas tidyr, y compris unnest ().

3
Carl F.

Comme je ne vois pas beaucoup de réponses favorables sparkR je veux juste mentionner qu'en tant que débutant, j'ai commencé à les apprendre tous les deux et je vois que sparkR api est plus étroitement lié à celui que j'utilise avec standard scala-spark. Quand je les étudie tous les deux, je veux dire que je veux utiliser rstudio et aussi scala, je dois choisir entre sparkr et sparklyr. Apprendre sparkR avec scala-spark Api, semble nécessiter moins d'effort que d'apprendre sparkly, ce qui est beaucoup plus différent, du moins selon moi. Cependant, sparklyr semble plus puissant. Donc, pour moi, il s’agit de savoir si vous voulez utiliser la bibliothèque la plus puissante et la plus utilisée avec le soutien de la communauté ou si vous compromettez et utilisez l’API plus semblable à Scala-spark, c’est au moins ma perspective.

2
Tomer Ben David

J'ai récemment écrit un aperçu des avantages/inconvénients de SparkR par rapport à sparklyr, ce qui peut présenter un intérêt: https://eddjberry.netlify.com/post/2017-12-05-sparkr-vs-sparklyr/ .

Il y a un tablea en haut de l'article qui donne un aperçu approximatif des différences pour une gamme de critères.

Je conclus que sparklyr est préférable à SparkR. Les avantages les plus notables sont:

  1. Meilleure manipulation des données grâce à la compatibilité avec dpylr
  2. Meilleures conventions de nommage des fonctions
  3. De meilleurs outils pour évaluer rapidement les modèles ML
  4. Plus facile d’exécuter du code arbitraire sur un Spark DataFrame
1
Eddd