Posit AI Blog: Glitzerwurm-Neuigkeiten

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

  • sparkxgb erwacht 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.


Posit AI Blog: Glitzerwurm-Neuigkeiten

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() Und xgboost_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 bleiben NULL:

  • 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 sparkxgb Das 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}
}

Source link

Similar Posts