Reflejos
sparklyr
y amigos han recibido algunas actualizaciones importantes en los últimos meses, aquí hay algunos aspectos destacados:
-
spark_apply()
ahora funciona en Databricks Join v2 -
sparkxgb
esta volviendo a la vida -
El soporte para Spark 2.3 y versiones anteriores ha finalizado
pysparklyr 0.1.4
spark_apply()
ahora funciona en Databricks Join v2. lo último pysparklyr
lanzamiento utiliza el rpy2
Biblioteca Python como columna vertebral de la integración.
Databricks Join v2 está basado en Spark Join. En este momento, admite funciones definidas por el usuario (UDF) de Python, pero no funciones definidas por el usuario de R. Usando rpy2
elude esta limitación. Como se muestra en el diagrama, sparklyr
envía el código R al instalado localmente rpy2
que a su vez lo envía a Spark. Entonces el rpy2
instalado en el clúster remoto de Databricks ejecutará el código R.

Figura 1: Código R a través de rpy2
Una gran ventaja de este enfoque es que rpy2
admite flecha. De hecho, es la biblioteca Python recomendada para usar al integrar Chispa, Flecha y R. ¡Esto significa que el intercambio de datos entre los tres entornos será mucho más rápido!
Como en su implementación authentic, la inferencia de esquemas funciona y, al igual que con la implementación authentic, tiene un costo de rendimiento. Pero a diferencia de la authentic, esta implementación devolverá una especificación de ‘columnas’ que podrá utilizar la próxima vez que ejecute la llamada.
spark_apply(
tbl_mtcars,
nrow,group_by = "am"
)
#> To extend efficiency, use the next schema:
#> columns = "am double, x lengthy"
#> # Supply: desk<`sparklyr_tmp_table_b84460ea_b1d3_471b_9cef_b13f339819b6`> [2 x 2]
#> # Database: spark_connection
#> am x
#> <dbl> <dbl>
#> 1 0 19
#> 2 1 13
Un artículo completo sobre esta nueva capacidad está disponible aquí:
Ejecute R dentro de Databricks Join
chispaxgb
El sparkxgb
es una extensión de sparklyr
. Permite la integración con
XGBoost. La versión precise de CRAN no es appropriate con las últimas versiones de XGBoost. Esta limitación ha provocado recientemente una actualización completa de sparkxgb
. Aquí hay un resumen de las mejoras, que se encuentran actualmente en el versión de desarrollo del paquete:
-
El
xgboost_classifier()
yxgboost_regressor()
Las funciones ya no pasan valores de dos argumentos. Estos fueron desaprobados por XGBoost y causan un error si se usan. En la función R, los argumentos permanecerán por compatibilidad con versiones anteriores, pero generarán un error informativo si no se dejanNULL
: -
Actualiza la versión de JVM utilizada durante la sesión de Spark. ahora usa xgboost4j-chispa versión 2.0.3en lugar de 0.8.1. Esto nos da acceso al código Spark más reciente de XGboost.
-
Actualiza el código que utilizaba funciones obsoletas de dependencias anteriores de R. También deja de usar un paquete no mantenido como dependencia (
forge
). Esto eliminó todas las advertencias que ocurrían al ajustar un modelo. -
Mejoras importantes en las pruebas de paquetes. Las pruebas unitarias se actualizaron y ampliaron, la forma
sparkxgb
inicia y detiene automáticamente la sesión de Spark para realizar pruebas y se restauraron las pruebas de integración continua. Esto garantizará la salud del paquete en el futuro.
::install_github("rstudio/sparkxgb")
remotes
library(sparkxgb)
library(sparklyr)
<- spark_connect(grasp = "native")
sc <- copy_to(sc, iris)
iris_tbl
<- xgboost_classifier(
xgb_model
iris_tbl,~ .,
Species num_class = 3,
num_round = 50,
max_depth = 4
)
%>%
xgb_model ml_predict(iris_tbl) %>%
choose(Species, predicted_label, starts_with("probability_")) %>%
::glimpse()
dplyr#> Rows: ??
#> Columns: 5
#> Database: spark_connection
#> $ Species <chr> "setosa", "setosa", "setosa", "setosa", "setosa…
#> $ predicted_label <chr> "setosa", "setosa", "setosa", "setosa", "setosa…
#> $ probability_setosa <dbl> 0.9971547, 0.9948581, 0.9968392, 0.9968392, 0.9…
#> $ probability_versicolor <dbl> 0.002097376, 0.003301427, 0.002284616, 0.002284…
#> $ probability_virginica <dbl> 0.0007479066, 0.0018403779, 0.0008762418, 0.000…
brillante 1.8.5
La nueva versión de sparklyr
no tiene mejoras de cara al usuario. Pero internamente ha superado un hito importante. El soporte para Spark versión 2.3 y anteriores ha finalizado efectivamente. El código Scala necesario para hacerlo ya no forma parte del paquete. Según la política de versiones de Spark, encontrado aquíSpark 2.3 llegó al last de su vida útil en 2018.
Esto es parte de un esfuerzo mayor y continuo para hacer que la inmensa base de código de
sparklyr
un poco más fácil de mantener y, por tanto, reducir el riesgo de fallos. Como parte del mismo esfuerzo, la cantidad de paquetes ascendentes que sparklyr
depende se han reducido. Esto ha estado sucediendo en múltiples versiones de CRAN y en esta última versión tibble
y rappdirs
ya no son importados por sparklyr
.
Reutilizar
El texto y las figuras tienen licencia Inventive Commons Attribution. CC POR 4.0. Las figuras que han sido reutilizadas de otras fuentes no están cubiertas por esta licencia y pueden reconocerse por una nota en su pie de foto: “Figura de…”.
Citación
Para atribución, cite este trabajo como
Ruiz (2024, April 22). Posit AI Weblog: Information from the sparkly-verse. Retrieved from https://blogs.rstudio.com/tensorflow/posts/2024-04-22-sparklyr-updates/
Cita BibTeX
@misc{sparklyr-updates-q1-2024, creator = {Ruiz, Edgar}, title = {Posit AI Weblog: Information from the sparkly-verse}, url = {https://blogs.rstudio.com/tensorflow/posts/2024-04-22-sparklyr-updates/}, 12 months = {2024} }