Posit AI Blog: Glitzerwurm-Neuigkeiten
Höhepunkte
sparklyr und meine Freunde haben in den letzten Monaten einige wichtige Updates erhalten, hier sind einige Highlights:
-
spark_apply()Funktioniert jetzt auf Databricks Connect v2 -
sparkxgberwacht wieder zum Leben -
Der Support für Spark 2.3 und früher wurde eingestellt
pysparklyr 0.1.4
spark_apply() Funktioniert jetzt auf Databricks Connect v2. Der letzte pysparklyr
Die Version verwendet die rpy2 Python-Bibliothek als Rückgrat der Integration.
Databricks Connect v2 basiert auf Spark Connect. Derzeit werden benutzerdefinierte Python-Funktionen (UDFs) unterstützt, jedoch keine benutzerdefinierten R-Funktionen. rpy2 umgeht diese Einschränkung. Wie das Diagramm zeigt, sparklyr
Sendet R-Code an das lokal installierte System rpy2die es wiederum an Spark sendet. Dann die rpy2 Wenn im Remote-Databricks-Cluster installiert ist, wird der R-Code ausgeführt.

Abbildung 1: R-Code über rpy2
Ein großer Vorteil dieses Ansatzes besteht darin rpy2 unterstützt Arrow. Tatsächlich handelt es sich um die empfohlene Python-Bibliothek für die Integration von Spark, Arrow und R. Dies bedeutet, dass der Datenaustausch zwischen den drei Umgebungen viel schneller erfolgt!
Wie in der ursprünglichen Implementierung funktioniert die Schema-Inferenz, und wie in der ursprünglichen Implementierung ist dies mit Leistungseinbußen verbunden. Im Gegensatz zum Original gibt diese Implementierung jedoch eine „Spalten“-Spezifikation zurück, die Sie bei der nächsten Ausführung des Aufrufs verwenden können.
spark_apply(
tbl_mtcars,
nrow,
group_by = "am"
)
#> To increase performance, use the following schema:
#> columns = "am double, x long"
#> # Source: table<`sparklyr_tmp_table_b84460ea_b1d3_471b_9cef_b13f339819b6`> (2 x 2)
#> # Database: spark_connection
#> am x
#>
#> 1 0 19
#> 2 1 13
Einen vollständigen Artikel zu dieser neuen Funktion finden Sie hier: Run R in Databricks Connect
sparkxgb
DER sparkxgb ist eine Erweiterung von sparklyr. Es ermöglicht die Integration mit XGBoost. Die aktuelle Version von CRAN unterstützt nicht die neuesten Versionen von XGBoost. Diese Einschränkung führte kürzlich zu einer vollständigen Aktualisierung von sparkxgb. Hier ist eine Zusammenfassung der Verbesserungen, die derzeit in der Entwicklungsversion des Pakets vorhanden sind:
-
DER
xgboost_classifier()Undxgboost_regressor()Funktionen übergeben nicht mehr die Werte von zwei Argumenten. Diese wurden von XGBoost veraltet und verursachen bei Verwendung einen Fehler. In der R-Funktion bleiben die Argumente aus Gründen der Abwärtskompatibilität erhalten, lösen jedoch einen informativen Fehler aus, wenn sie nicht übrig bleibenNULL: -
Aktualisiert die während der Spark-Sitzung verwendete JVM-Version. Es verwendet jetzt xgboost4j-spark Version 2.0.3 anstelle von 0.8.1. Dadurch erhalten wir Zugriff auf den neuesten Spark-Code von XGboost.
-
Aktualisiert Code, der veraltete Funktionen aus Upstream-R-Abhängigkeiten verwendet. Außerdem wird die Verwendung eines nicht verwalteten Pakets als Abhängigkeit beendet (
forge). Dadurch wurden alle Warnungen beseitigt, die beim Anpassen eines Modells auftraten. -
Wesentliche Verbesserungen beim Pakettesten. Unit-Tests wurden ebenfalls aktualisiert und erweitert
sparkxgbDas automatische Starten und Stoppen der Spark-Sitzung zum Testen wurde modernisiert und kontinuierliche Integrationstests wiederhergestellt. Dadurch wird die Gesundheit des Pakets in Zukunft sichergestellt.
remotes::install_github("rstudio/sparkxgb")
library(sparkxgb)
library(sparklyr)
sc <- spark_connect(master = "local")
iris_tbl <- copy_to(sc, iris)
xgb_model <- xgboost_classifier(
iris_tbl,
Species ~ .,
num_class = 3,
num_round = 50,
max_depth = 4
)
xgb_model %>%
ml_predict(iris_tbl) %>%
select(Species, predicted_label, starts_with("probability_")) %>%
dplyr::glimpse()
#> Rows: ??
#> Columns: 5
#> Database: spark_connection
#> $ Species "setosa", "setosa", "setosa", "setosa", "setosa…
#> $ predicted_label "setosa", "setosa", "setosa", "setosa", "setosa…
#> $ probability_setosa 0.9971547, 0.9948581, 0.9968392, 0.9968392, 0.9…
#> $ probability_versicolor 0.002097376, 0.003301427, 0.002284616, 0.002284…
#> $ probability_virginica 0.0007479066, 0.0018403779, 0.0008762418, 0.000…
Sparklyr 1.8.5
Die neue Version von sparklyr verfügt über keine Verbesserungen für den Benutzer. Doch intern hat er einen wichtigen Meilenstein erreicht. Der Support für Spark Version 2.3 und niedriger wurde effektiv eingestellt. Der dafür benötigte Scala-Code ist nicht mehr Teil des Pakets. Gemäß der Release-Management-Richtlinie von Spark, die Sie hier finden, war Spark 2.3 im Jahr 2018 „End of Life“.
Dies ist Teil einer größeren, laufenden Anstrengung, die umfangreiche Codebasis von zu erstellen
sparklyr etwas wartungsfreundlicher und verringern so das Risiko von Ausfällen. Im Rahmen des gleichen Aufwands steigt die Anzahl der Upstream-Pakete sparklyr
hängt davon ab, wurden reduziert. Dies ist in mehreren Versionen von CRAN und in dieser neuesten Version geschehen tibbleUnd rappdirs werden nicht mehr importiert von sparklyr.
Wiederverwendung
Text und Abbildungen sind unter der Creative Commons Attribution CC BY 4.0-Lizenz lizenziert. Aus anderen Quellen wiederverwendete Abbildungen fallen nicht unter diese Lizenz und sind an dem Hinweis in der Bildunterschrift zu erkennen: „Abbildung aus…“.
Zitat
Zur Quellenangabe zitieren Sie dieses Werk bitte als
Ruiz (2024, April 22). Posit AI Blog: News from the sparkly-verse. Retrieved from https://blogs.rstudio.com/tensorflow/posts/2024-04-22-sparklyr-updates/
BibTeX-Zitat
@misc{sparklyr-updates-q1-2024,
author = {Ruiz, Edgar},
title = {Posit AI Blog: News from the sparkly-verse},
url = {https://blogs.rstudio.com/tensorflow/posts/2024-04-22-sparklyr-updates/},
year = {2024}
}
