read text file in pyspark
SparkR vs sparklyr (7)
¿Alguien tiene una visión general con respecto a las ventajas / desventajas de SparkR vs sparklyr? Google no produce resultados satisfactorios y ambos parecen bastante similares. Al probar ambos, SparkR parece mucho más engorroso, mientras que sparklyr es bastante sencillo (tanto para instalar como para usar, especialmente con las entradas dplyr). ¿Puede sparklyr solo usarse para ejecutar funciones dplyr en paralelo o también código R "normal"?
Mejor
... agregando a lo anterior de Javier ...
Que puedo encontrar hasta ahora, sparklyr no admite do (), por lo que es útil solo cuando desea hacer lo que permite mutar, resumir, etc. Bajo el capó, sparklyr se está transformando a Spark SQL, pero no lo hace ( ¿todavía?) transforma do () en algo así como un UDF.
Además, que puedo encontrar hasta ahora, sparklyr no es compatible con tidyr, incluido unnest ().
Al ser una envoltura, hay algunas limitaciones para
sparklyr
.
Por ejemplo, el uso de
copy_to()
para crear un marco de datos Spark no conserva las columnas formateadas como fechas.
Con
SparkR
,
as.Dataframe()
conserva las fechas.
Como no veo demasiadas respuestas que estén a favor de
sparkR
, solo quiero mencionar que, como novato, comencé a aprender las dos y veo que la API de sparkR está más estrechamente relacionada con la que uso con
scala-spark
estándar.
Cuando los estudio a ambos quiero decir que quiero usar
rstudio
y también scala, necesito elegir entre sparkr y sparklyr.
Aprender sparkR junto con la API scala-spark parece ser de menos esfuerzo que aprender sparklyr, que es mucho más diferente al menos en mi perspectiva.
Sin embargo, sparklyr parece más poderoso.
Entonces, para mí es una cuestión de si quieres usar la biblioteca más poderosa y de uso común con más apoyo de la comunidad o te comprometes y usas la API más similar que en scala-spark, que es al menos mi perspectiva para elegir.
La mayor ventaja de SparkR es la capacidad de ejecutarse en funciones arbitrarias definidas por el usuario de Spark escritas en R:
https://spark.apache.org/docs/2.0.1/sparkr.html#applying-user-defined-function
Como sparklyr traduce R a SQL, solo puede usar un conjunto muy pequeño de funciones en las declaraciones de
mutate
:
http://spark.rstudio.com/dplyr.html#sql_translation
Esa deficiencia se alivia un poco con las extensiones ( http://spark.rstudio.com/extensions.html#wrapper_functions ).
Aparte de eso, sparklyr es un ganador (en mi opinión).
Además de la ventaja obvia de usar las funciones familiares de
dplyr
, sparklyr tiene una API mucho más completa para MLlib (
http://spark.rstudio.com/mllib.html
) y las Extensiones mencionadas anteriormente.
Para obtener información general y detalles en profundidad, puede consultar la documentation . Citando de la documentación, "el paquete sparklyr proporciona un backend dplyr completo". Esto refleja que sparklyr NO es un reemplazo del apache spark original sino una extensión del mismo.
Continuando, hablando de su instalación (soy un usuario de Windows) en una computadora independiente, necesitaría descargar e instalar la nueva versión de Vista previa de RStudio o ejecutar la siguiente serie de comandos en el shell de RStudio,
> devtools::install_github("rstudio/sparklyr")
instale paquetes de lectura y resumen si no los tiene instalados.
install.packages("readr")
install.packages("digest")
library(sparklyr)
spark_install(version = "1.6.2")`
Una vez que los paquetes están instalados e intenta conectarse, se conecta a la instancia local de spark utilizando el comando;
sc <- spark_connect(master = "local")
Puede ver un error como
Se creó el directorio bin de hadoop predeterminado en: C: / spark-1.6.2 / tmp / hadoop Error:
Para ejecutar Spark en Windows necesita una copia de Hadoop winutils.exe:
- Descargue Hadoop winutils.exe from
- Copie winutils.exe en C: / spark-1.6.2 / tmp / hadoop / bin
Alternativamente, si está utilizando RStudio, puede instalar la versión de vista previa de RStudio que incluye una copia incrustada de Hadoop winutils.exe.
La resolución de error se te da.
Dirígete a la cuenta de github, descarga el archivo winutils.exe y guárdalo en la ubicación,
C:/spark-1.6.2/tmp/hadoop/bin
e intenta crear el contexto de chispa nuevamente.
El año pasado publiqué una publicación completa en mi
blog
detallaba la instalación y trabajaba con sparkR en el entorno de Windows.
Una vez dicho esto, recomendaría no seguir esta dolorosa ruta de instalación de una instancia local de chispa en el RStudio habitual, sino probar la versión de vista previa de RStudio . Le ahorrará en gran medida la molestia de crear el sparkcontext. Continuando más, aquí hay una publicación detallada sobre cómo sparklyr se puede usar R-bloggers .
Espero que esto ayude.
Aclamaciones.
Recientemente escribí una descripción general de las ventajas / desventajas de SparkR vs sparklyr, que pueden ser de interés: https://eddjberry.netlify.com/post/2017-12-05-sparkr-vs-sparklyr/ .
Hay una table en la parte superior de la publicación que ofrece una visión general de las diferencias para una variedad de criterios.
Concluyo que
sparklyr
es preferible a
SparkR
.
Las ventajas más notables son:
-
Mejor manipulación de datos a través de la compatibilidad con
dpylr
- Mejores convenciones de nomenclatura de funciones
- Mejores herramientas para evaluar rápidamente los modelos ML
- Es más fácil ejecutar código arbitrario en un Spark DataFrame
Te puedo dar los mejores momentos para documentation :
- Admite dplyr , http://spark.rstudio.com/mllib.html y H2O .
- Distribuido en CRAN .
- Fácil de instalar.
- Extensible
En la versión
0.4
actual, todavía no admite la ejecución arbitraria de código paralelo.
Sin embargo, las extensiones se pueden escribir fácilmente en Scala para superar esta limitación, vea
sparkhello
.