Σύνδεση Spark για την Αποθήκη δεδομένων Microsoft Fabric
Η σύνδεση Spark για την Αποθήκη δεδομένων Fabric επιτρέπει στους προγραμματιστές Spark και τους επιστήμονες δεδομένων να έχουν πρόσβαση και να εργάζονται με δεδομένα από μια αποθήκη και το τελικό σημείο ανάλυσης SQL ενός lakehouse. Η σύνδεση προσφέρει τις εξής δυνατότητες:
- Μπορείτε να εργαστείτε με δεδομένα από μια αποθήκη ή ένα τελικό σημείο ανάλυσης SQL στον ίδιο χώρο εργασίας ή σε πολλούς χώρους εργασίας.
- Το τελικό σημείο ανάλυσης SQL ενός Lakehouse ενσωματώνεται αυτόματα με βάση το περιβάλλον χώρου εργασίας.
- Η σύνδεση διαθέτει ένα απλοποιημένο Spark API, αφαιρεί την υποκείμενη πολυπλοκότητα και λειτουργεί με μία μόνο γραμμή κώδικα.
- Κατά την πρόσβαση σε έναν πίνακα ή μια προβολή, η σύνδεση υποστηρίζει μοντέλα ασφαλείας που έχουν οριστεί σε επίπεδο μηχανισμού SQL. Αυτά τα μοντέλα περιλαμβάνουν ασφάλεια σε επίπεδο αντικειμένου (OLS), ασφάλεια σε επίπεδο γραμμών (RLS) και ασφάλεια σε επίπεδο στηλών (CLS).
- Η σύνδεση παρέχεται προεγκατεστημένες εντός του χρόνου εκτέλεσης Fabric, το οποίο εξαλείφει την ανάγκη για ξεχωριστή εγκατάσταση.
Σημείωμα
Η σύνδεση είναι αυτήν τη στιγμή σε προεπισκόπηση. Για περισσότερες πληροφορίες, ανατρέξτε στους τρέχοντες περιορισμούς παρακάτω σε αυτό το άρθρο.
Έλεγχος ταυτότητας
Ο έλεγχος ταυτότητας Microsoft Entra είναι μια ενσωματωμένη προσέγγιση ελέγχου ταυτότητας. Οι χρήστες εισέρχονται στον χώρο εργασίας Microsoft Fabric και τα διαπιστευτήριά τους μεταβιβάζονται αυτόματα στη μηχανή SQL για έλεγχο ταυτότητας και εξουσιοδότηση. Τα διαπιστευτήρια αντιστοιχίζονται αυτόματα και δεν απαιτούνται οι χρήστες για την παροχή συγκεκριμένων επιλογών ρύθμισης παραμέτρων.
Δικαιώματα
Για να συνδεθούν με τη μηχανή SQL, οι χρήστες χρειάζονται τουλάχιστον δικαίωμα ανάγνωσης (παρόμοια με το δικαίωμα CONNECT στον SQL Server) στην αποθήκη ή στο τελικό σημείο ανάλυσης SQL (επίπεδο στοιχείου). Οι χρήστες χρειάζονται επίσης λεπτομερή δικαιώματα επιπέδου αντικειμένου για την ανάγνωση δεδομένων από συγκεκριμένους πίνακες ή προβολές. Για να μάθετε περισσότερα, ανατρέξτε στο θέμα Ασφάλεια για αποθήκευση δεδομένων στο Microsoft Fabric.
Πρότυπα και παραδείγματα κώδικα
Χρήση υπογραφής μεθόδου
Η ακόλουθη εντολή εμφανίζει την synapsesql
υπογραφή μεθόδου για την αίτηση ανάγνωσης. Το όρισμα τριών τμημάτων tableName
απαιτείται για την πρόσβαση σε πίνακες ή προβολές από μια αποθήκη και το τελικό σημείο ανάλυσης SQL ενός lakehouse. Ενημερώστε το όρισμα με τα ακόλουθα ονόματα, με βάση το σενάριό σας:
- Μέρος 1: Όνομα της αποθήκης ή του lakehouse.
- Μέρος 2: Το όνομα του σχήματος.
- Μέρος 3: Όνομα του πίνακα ή της προβολής.
synapsesql(tableName:String="<Part 1.Part 2.Part 3>") => org.apache.spark.sql.DataFrame
Εκτός από την ανάγνωση από έναν πίνακα ή προβολή απευθείας, αυτή η σύνδεση σάς επιτρέπει επίσης να καθορίσετε ένα προσαρμοσμένο ερώτημα ή ερώτημα διαβίβασης, το οποίο μεταβιβάζεται στον μηχανισμό SQL και το αποτέλεσμα επιστρέφεται πίσω στο Spark.
spark.read.option(Constants.DatabaseName, "<warehouse/lakeshouse name>").synapsesql("<T-SQL Query>") => org.apache.spark.sql.DataFrame
Παρόλο που αυτή η σύνδεση εντοπίζει αυτόματα το τελικό σημείο για την καθορισμένη αποθήκη/λίμνη, εάν θέλετε να το καθορίσετε ρητά, μπορείτε να το κάνετε.
//For warehouse
spark.conf.set("spark.datawarehouse.<warehouse name>.sqlendpoint", "<sql endpoint,port>")
//For lakehouse
spark.conf.set("spark.lakehouse.<lakeshouse name>.sqlendpoint", "<sql endpoint,port>")
//Read from table
spark.read.synapsesql("<warehouse/lakeshouse name>.<schema name>.<table or view name>")
Ανάγνωση δεδομένων στον ίδιο χώρο εργασίας
Σημαντικό
Εκτελέστε αυτές τις προτάσεις εισαγωγής στην αρχή του σημειωματάριού σας ή πριν αρχίσετε να χρησιμοποιείτε τη σύνδεση:
Για τη Scala
import com.microsoft.spark.fabric.tds.implicits.read.FabricSparkTDSImplicits._
import com.microsoft.spark.fabric.Constants
Για το PySpark (Python)
import com.microsoft.spark.fabric
from com.microsoft.spark.fabric.Constants import Constants
Ο ακόλουθος κώδικας είναι ένα παράδειγμα για την ανάγνωση δεδομένων από έναν πίνακα ή προβολή σε ένα Spark DataFrame:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")
Ο παρακάτω κώδικας είναι ένα παράδειγμα ανάγνωσης δεδομένων από έναν πίνακα ή προβολή σε ένα Spark DataFrame με όριο πλήθους γραμμών 10:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").limit(10)
Ο ακόλουθος κώδικας είναι ένα παράδειγμα για την ανάγνωση δεδομένων από έναν πίνακα ή προβολή σε ένα Spark DataFrame αφού εφαρμόσετε ένα φίλτρο:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").filter("column name == 'value'")
Ο ακόλουθος κώδικας είναι ένα παράδειγμα ανάγνωσης δεδομένων από έναν πίνακα ή προβολή σε ένα Spark DataFrame μόνο για επιλεγμένες στήλες:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").select("column A", "Column B")
Ανάγνωση δεδομένων σε πολλούς χώρους εργασίας
Για πρόσβαση και ανάγνωση δεδομένων από μια αποθήκη ή μια λίμνη μεταξύ χώρων εργασίας, μπορείτε να καθορίσετε το αναγνωριστικό χώρου εργασίας όπου υπάρχει η αποθήκη ή η λίμνη σας και, στη συνέχεια, το αναγνωριστικό στοιχείου lakehouse ή αποθήκης. Η ακόλουθη γραμμή παρέχει ένα παράδειγμα ανάγνωσης δεδομένων από έναν πίνακα ή προβολή σε ένα Spark DataFrame από την αποθήκη ή τη λίμνη με το καθορισμένο αναγνωριστικό χώρου εργασίας και το αναγνωριστικό lakehouse/warehouse:
# For lakehouse
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").synapsesql("<lakehouse name>.<schema name>.<table or view name>")
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").option(Constants.LakehouseId, "<lakehouse item id>").synapsesql("<lakehouse name>.<schema name>.<table or view name>")
# For warehouse
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").synapsesql("<warehouse name>.<schema name>.<table or view name>")
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").option(Constants.DatawarehouseId, "<warehouse item id>").synapsesql("<warehouse name>.<schema name>.<table or view name>")
Σημείωμα
Όταν εκτελείτε το σημειωματάριο, από προεπιλογή η σύνδεση αναζητά την καθορισμένη αποθήκη ή μια λίμνη στον χώρο εργασίας της λίμνης που είναι προσαρτημένη στο σημειωματάριο. Για αναφορά σε μια αποθήκη ή μια λίμνη από άλλο χώρο εργασίας, καθορίστε το αναγνωριστικό χώρου εργασίας και το lakehouse ή το αναγνωριστικό στοιχείου αποθήκης όπως παραπάνω.
Δημιουργία ενός πίνακα lakehouse με βάση δεδομένα από μια αποθήκη
Αυτές οι γραμμές κώδικα παρέχουν ένα παράδειγμα για την ανάγνωση δεδομένων από έναν πίνακα ή προβολή σε ένα Spark DataFrame και τη χρήση τους για τη δημιουργία ενός πίνακα lakehouse:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")
df.write.format("delta").saveAsTable("<Lakehouse table name>")
Αντιμετώπιση προβλημάτων
Με την ολοκλήρωση, εμφανίζεται το τμήμα κώδικα απόκρισης ανάγνωσης στην έξοδο του κελιού. Η αποτυχία στο τρέχον κελί ακυρώνει επίσης τις επόμενες εκτελέσεις κελιών του σημειωματάριου. Λεπτομερείς πληροφορίες σφαλμάτων είναι διαθέσιμες στα αρχεία καταγραφής εφαρμογής Spark.
Τρέχοντες περιορισμοί
Προς το παρόν, η σύνδεση:
- Υποστηρίζει την ανάκτηση δεδομένων από αποθήκες Fabric και τελικά σημεία ανάλυσης SQL στοιχείων lakehouse.
- Η έκδοση DW Fabric υποστηρίζει
Time Travel
τώρα, ωστόσο, αυτή η σύνδεση δεν λειτουργεί για ένα ερώτημα με σύνταξη ταξιδιού χρόνου. - Διατηρεί την υπογραφή χρήσης όπως αυτή που συνοδεύει το Apache Spark για το Azure Synapse Analytics για λόγους συνέπειας. Ωστόσο, δεν είναι συμβατή με προηγούμενες εκδόσεις για τη σύνδεση και την εργασία με έναν αποκλειστικό χώρο συγκέντρωσης SQL στο Azure Synapse Analytics.
- Ο χειρισμός των ονομάτων στηλών με ειδικούς χαρακτήρες θα γίνει με την προσθήκη χαρακτήρα διαφυγής πριν από την υποβολή του ερωτήματος, με βάση το όνομα πίνακα/προβολής 3 τμημάτων. Σε περίπτωση ανάγνωσης που βασίζεται σε προσαρμοσμένο ερώτημα ή ερώτημα διαβίβασης, οι χρήστες πρέπει να αποφύγουν τα ονόματα στηλών που θα περιέχουν ειδικούς χαρακτήρες.