Χρήση 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.
Ανοίξτε ή δημιουργήστε ένα σημειωματάριο. Για να μάθετε τον τρόπο, ανατρέξτε στο θέμα Τρόπος χρήσης σημειωματάριων Microsoft Fabric.
Ορίστε την επιλογή γλώσσας σε SparkR (R) για να αλλάξετε την κύρια γλώσσα.
Επισυνάψτε το σημειωματάριό σας σε ένα lakehouse. Στην αριστερή πλευρά, επιλέξτε Προσθήκη για να προσθέσετε μια υπάρχουσα λίμνη ή για να δημιουργήσετε μια λίμνη.
Χρησιμοποιήστε την ακόλουθη μέθοδο σύνδεσης στο 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)
Μια νέα περίοδος λειτουργίας 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
Η παρέχει πολλές μεθόδους για την επεξεργασία δεδομένων εντός του Spark με χρήση:
dplyr
Εντολές- SparkSQL
- Μετασχηματιστές δυνατοτήτων του Spark
Μπορείτε να χρησιμοποιήσετε γνωστές 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 απευθείας σε πίνακες μέσα σε ένα σύμπλεγμα 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
σε σύμπλεγμα 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_disconnect()
το ή να επιλέξετε το κουμπί Διακοπή περιόδου λειτουργίας στην κορδέλα σημειωματάριου και να τερματίσετε την περίοδο λειτουργίας Spark.
spark_disconnect(sc)
Μάθετε περισσότερα σχετικά με τις λειτουργίες της R: