Χρήση sparklyr
πιο είναι μια διασύνδεση R με το Apache Spark. Παρέχει έναν μηχανισμό αλληλεπίδρασης με το Spark χρησιμοποιώντας γνώριμες διασυνδέσεις R. Μπορείτε να χρησιμοποιήσετε sparklyr μέσω ορισμών μαζικής εργασίας Spark ή με αλληλεπιδραστικά σημειωματάρια Microsoft Fabric.
sparklyr
χρησιμοποιείται μαζί με άλλα τακτοποιημένα πακέτα, όπως τα dplyr. Το Microsoft Fabric διανέμει την πιο πρόσφατη σταθερή έκδοση του sparklyr και του tidyverse με κάθε έκδοση του χρόνου εκτέλεσης. Μπορείτε να τα εισαγάγετε και να αρχίσετε να χρησιμοποιείτε το API.
Προϋποθέσεις
Λάβετε μια συνδρομής Microsoft Fabric . Εναλλακτικά, εγγραφείτε για μια δωρεάν δοκιμαστική έκδοση microsoft Fabric.
Εισέλθετε για να το Microsoft Fabric.
Χρησιμοποιήστε την εναλλαγή εμπειρίας στην κάτω αριστερή πλευρά της αρχικής σελίδας σας για να μεταβείτε σε Fabric.
Ανοίξτε ή δημιουργήστε ένα σημειωματάριο. Για να μάθετε πώς, ανατρέξτε στο θέμα Τρόπος χρήσης σημειωματάριων Microsoft Fabric.
Ορίστε την επιλογή γλώσσας για να το SparkR (R) για να αλλάξετε την κύρια γλώσσα.
Επισυνάψτε το σημειωματάριό σας σε ένα lakehouse. Στην αριστερή πλευρά, επιλέξτε Προσθήκη για να προσθέσετε μια υπάρχουσα λίμνη ή για να δημιουργήσετε ένα 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, κάντε δεξί κλικ στον φάκελο αρχεία 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, ώστε να μπορείτε να χρησιμοποιήσετε dbGetQuery()
για να εκτελέσετε SQL και να επιστρέψετε το αποτέλεσμα ως πλαίσιο δεδομένων 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
από Reference -FT.
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
Κοινή χρήση δεδομένων μεταξύ sparklyr
και SparkR
Όταν συνδέσετε το sparklyr
στο σύμπλεγμα sparkynapse με 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 επισκεφθείτε Reference - ML
Αποσύνδεση από το σύμπλεγμα Spark
Μπορείτε να καλέσετε
spark_disconnect(sc)
Σχετικό περιεχόμενο
Μάθετε περισσότερα σχετικά με τις λειτουργίες της R:
- Τρόπος χρήσης του SparkR
- Πώς να χρησιμοποιήσετε το Tidyverse
- διαχείρισης βιβλιοθήκης R
- δημιουργίας απεικόνισης R
- πρόγραμμα εκμάθησης : πρόβλεψης των τιμών του αβοκάντο
- Εκμάθηση : πρόβλεψης καθυστέρησης πτήσης