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


Χρήση 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, κάντε δεξί κλικ στον φάκελο αρχεία στο 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.

spark_disconnect(sc)

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