Κοινή χρήση μέσω


Χρήση sparklyr

Sparklyr είναι μια διασύνδεση R με το Apache Spark. Παρέχει έναν μηχανισμό αλληλεπίδρασης με το Spark χρησιμοποιώντας γνώριμες διασυνδέσεις R. Μπορείτε να χρησιμοποιήσετε sparklyr μέσω ορισμών μαζικής εργασίας Spark ή με αλληλεπιδραστικά σημειωματάρια Microsoft Fabric.

sparklyr Το χρησιμοποιείται μαζί με άλλα τακτοποιημένα πακέτα, όπως το dplyr. Το Microsoft Fabric διανέμει την πιο πρόσφατη σταθερή έκδοση του sparklyr και του tidyverse με κάθε έκδοση του χρόνου εκτέλεσης. Μπορείτε να τα εισαγάγετε και να αρχίσετε να χρησιμοποιείτε το API.

Προαπαιτούμενα στοιχεία

  • Λάβετε μια συνδρομή Microsoft Fabric. Εναλλακτικά, εγγραφείτε για μια δωρεάν δοκιμαστική έκδοση του Microsoft Fabric.

  • Εισέλθετε στο Microsoft Fabric.

  • Χρησιμοποιήστε την εναλλαγή εμπειρίας στην αριστερή πλευρά της αρχικής σελίδας σας για να μεταβείτε στην εμπειρία Synapse Data Science.

    Screenshot of the experience switcher menu, showing where to select Data Science.

  • Ανοίξτε ή δημιουργήστε ένα σημειωματάριο. Για να μάθετε τον τρόπο, ανατρέξτε στο θέμα Τρόπος χρήσης σημειωματάριων Microsoft Fabric.

  • Ορίστε την επιλογή γλώσσας σε SparkR (R) για να αλλάξετε την κύρια γλώσσα.

  • Επισυνάψτε το σημειωματάριό σας σε ένα lakehouse. Στην αριστερή πλευρά, επιλέξτε Προσθήκη για να προσθέσετε μια υπάρχουσα λίμνη ή για να δημιουργήσετε μια λίμνη.

Σύνδεση sparklyr στο σύμπλεγμα Synapse Spark

Χρησιμοποιήστε την ακόλουθη μέθοδο σύνδεσης στο spark_connect() για να δημιουργήσετε μια sparklyr σύνδεση. Υποστηρίζουμε μια νέα μέθοδο σύνδεσης που ονομάζεται synapse, η οποία σας επιτρέπει να συνδεθείτε σε μια υπάρχουσα περίοδο λειτουργίας Spark. Μειώνει εντυπωσιακά τον χρόνο έναρξης της sparklyr περιόδου λειτουργίας. Επιπλέον, συνεισφέραμε αυτή τη μέθοδο σύνδεσης στο ανοιχτός κώδικας έργο sparklyr. Με method = "synapse"το , μπορείτε να χρησιμοποιήσετε και τα δύο sparklyr και SparkR στην ίδια περίοδο λειτουργίας και να κάνετε εύκολα κοινή χρήση δεδομένων μεταξύ τους.

# connect sparklyr to your spark cluster
spark_version <- sparkR.version()
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", method = "synapse", config = config)

Χρήση sparklyr για την ανάγνωση δεδομένων

Μια νέα περίοδος λειτουργίας Spark δεν περιέχει δεδομένα. Το πρώτο βήμα είναι είτε να φορτώσετε δεδομένα στη μνήμη της περιόδου λειτουργίας Spark, είτε να κατευθύνετε το Spark στη θέση των δεδομένων, ώστε να μπορεί να έχει πρόσβαση στα δεδομένα κατ' απαίτηση.

# load the sparklyr package
library(sparklyr)

# copy data from R environment to the Spark session's memory
mtcars_tbl <- copy_to(sc, mtcars, "spark_mtcars", overwrite = TRUE)

head(mtcars_tbl)

Χρησιμοποιώντας sparklyrτο , μπορείτε επίσης write και read τα δεδομένα από ένα αρχείο Lakehouse χρησιμοποιώντας τη διαδρομή ABFS. Για να διαβάσετε και γράψετε σε ένα Lakehouse, προσθέστε το πρώτα στην περίοδο λειτουργίας σας. Στην αριστερή πλευρά του σημειωματάριου, επιλέξτε Προσθήκη για να προσθέσετε ένα υπάρχον Lakehouse ή να δημιουργήσετε ένα Lakehouse.

Για να βρείτε τη διαδρομή σας ABFS, κάντε δεξί κλικ στον φάκελο Αρχεία στο Lakehouse και, στη συνέχεια, επιλέξτε Αντιγραφή διαδρομής ABFS. Επικολλήστε τη διαδρομή σας για αντικατάσταση abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files σε αυτόν τον κώδικα:

temp_csv = "abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files/data/mtcars.csv"

# write the table to your lakehouse using the ABFS path
spark_write_csv(mtcars_tbl, temp_csv, header = TRUE, mode = 'overwrite')

# read the data as CSV from lakehouse using the ABFS path
mtcarsDF <- spark_read_csv(sc, temp_csv) 
head(mtcarsDF)

Χρήση sparklyr για τον χειρισμό δεδομένων

sparklyr Η παρέχει πολλές μεθόδους για την επεξεργασία δεδομένων εντός του Spark με χρήση:

  • dplyr Εντολές
  • SparkSQL
  • Μετασχηματιστές δυνατοτήτων του Spark

Χρησιμοποιήσετε dplyr

Μπορείτε να χρησιμοποιήσετε γνωστές dplyr εντολές για να προετοιμάσετε δεδομένα μέσα στο Spark. Οι εντολές εκτελούνται εντός του Spark, επομένως δεν υπάρχουν περιττές μεταφορές δεδομένων μεταξύ των R και Spark.

Κάντε κλικ στην επιλογή Χειρισμός δεδομένων με dplyr για να δείτε επιπλέον τεκμηρίωση σχετικά με τη χρήση του dplyr με Spark.

# count cars by the number of cylinders the engine contains (cyl), order the results descendingly
library(dplyr)

cargroup <- group_by(mtcars_tbl, cyl) %>%
  count() %>%
  arrange(desc(n))

cargroup

sparklyr και dplyr μεταφράστε τις εντολές R στο Spark SQL για εμάς. Για να δείτε τη χρήση show_query()του ερωτήματος που προκύπτει:

# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)

Χρήση SQL

Είναι επίσης δυνατή η εκτέλεση ερωτημάτων SQL απευθείας σε πίνακες μέσα σε ένα σύμπλεγμα Spark. Το spark_connection() αντικείμενο υλοποιεί μια διασύνδεση DBI για Spark, ώστε να μπορείτε να χρησιμοποιήσετε για την εκτέλεση SQL και να επιστρέψετε dbGetQuery() το αποτέλεσμα ως πλαίσιο δεδομένων R:

library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")

Χρήση μετασχηματιστών δυνατοτήτων

Και οι δύο προηγούμενες μέθοδοι βασίζονται σε προτάσεις SQL. Το Spark παρέχει εντολές που καθιστούν ορισμένες μετατροπές δεδομένων πιο εύχρηστες και χωρίς τη χρήση SQL.

Για παράδειγμα, η ft_binarizer() εντολή απλοποιεί τη δημιουργία μιας νέας στήλης, η οποία υποδεικνύει εάν η τιμή μιας άλλης στήλης είναι πάνω από ένα συγκεκριμένο όριο.

Μπορείτε να βρείτε την πλήρη λίστα των μετασχηματιστών δυνατοτήτων Spark που είναι διαθέσιμοι μέσω sparklyr της ενότητας Αναφορά -FT.

mtcars_tbl %>% 
  ft_binarizer("mpg", "over_20", threshold = 20) %>% 
  select(mpg, over_20) %>% 
  head(5)

Κοινή χρήση δεδομένων μεταξύ sparklyr και SparkR

Όταν συνδέεστε sparklyr σε σύμπλεγμα synapse spark με method = "synapse"το , μπορείτε να χρησιμοποιήσετε αμφότερα sparklyr και SparkR στην ίδια περίοδο λειτουργίας και να κάνετε εύκολα κοινή χρήση δεδομένων μεταξύ τους. Μπορείτε να δημιουργήσετε έναν πίνακα spark στο sparklyr και να τον διαβάσετε από SparkRτο .

# load the sparklyr package
library(sparklyr)

# Create table in `sparklyr`
mtcars_sparklyr <- copy_to(sc, df = mtcars, name = "mtcars_tbl", overwrite = TRUE, repartition = 3L)

# Read table from `SparkR`
mtcars_sparklr <- SparkR::sql("select cyl, count(*) as n
from mtcars_tbl
GROUP BY cyl
ORDER BY n DESC")

head(mtcars_sparklr)

Εκμάθηση μηχανής

Ακολουθεί ένα παράδειγμα όπου χρησιμοποιούμε ml_linear_regression() για την προσαρμογή ενός γραμμικού μοντέλου παλινδρόμησης. Χρησιμοποιούμε το ενσωματωμένο mtcars σύνολο δεδομένων και βλέπουμε αν μπορούμε να προβλέψουμε την κατανάλωση καυσίμου ενός αυτοκινήτου (mpg) με βάση το βάρος του (wt) και τον αριθμό των κυλίνδρων που περιέχει ο κινητήρας (cyl). Υποθέτουμε σε κάθε περίπτωση ότι η σχέση μεταξύ mpg και καθεμίας από τις δυνατότητές μας είναι γραμμική.

Δημιουργία συνόλων δεδομένων δοκιμών και εκπαίδευσης

Χρησιμοποιήστε μια διαίρεση, 70% για την εκπαίδευση και 30% για τη δοκιμή του μοντέλου. Η αναπαραγωγή με αυτή την αναλογία έχει ως αποτέλεσμα διαφορετικά μοντέλα.

# split the dataframe into test and training dataframes

partitions <- mtcars_tbl %>%
  select(mpg, wt, cyl) %>% 
  sdf_random_split(training = 0.7, test = 0.3, seed = 2023)

Εκπαίδευση του μοντέλου

Εκπαίδευση του μοντέλου λογιστικής παλινδρόμησης.

fit <- partitions$training %>%
  ml_linear_regression(mpg ~ .)

fit

Τώρα χρησιμοποιήστε το summary() για να μάθετε λίγο περισσότερα σχετικά με την ποιότητα του μοντέλου μας και τη στατιστική σημασία καθενός εκ των παραγόντων πρόβλεψης.

summary(fit)

Χρήση του μοντέλου

Μπορείτε να εφαρμόσετε το μοντέλο στο σύνολο δεδομένων δοκιμής καλώντας τη ml_predict().

pred <- ml_predict(fit, partitions$test)

head(pred)

Για μια λίστα των μοντέλων Spark ML που είναι διαθέσιμα μέσω αναφοράς με δυνατότητα sparklyr - ML

Αποσύνδεση από το σύμπλεγμα Spark

Μπορείτε να καλέσετε spark_disconnect() το ή να επιλέξετε το κουμπί Διακοπή περιόδου λειτουργίας στην κορδέλα σημειωματάριου και να τερματίσετε την περίοδο λειτουργίας Spark.

spark_disconnect(sc)

Μάθετε περισσότερα σχετικά με τις λειτουργίες της R: