Χρόνοι εκτέλεσης Apache Spark στο Fabric
Το Microsoft Fabric Runtime είναι μια ενσωματωμένη πλατφόρμα Azure που βασίζεται στο Apache Spark, η οποία επιτρέπει την εκτέλεση και διαχείριση των εμπειριών διαχείρισης δεδομένων και επιστήμης δεδομένων. Συνδυάζει βασικά στοιχεία τόσο από εσωτερικές προελεύσεις όσο και από προελεύσεις ανοιχτού κώδικα, παρέχοντας στους πελάτες μια ολοκληρωμένη λύση. Για λόγους ευκολίας, αναφερόμαστε στον χρόνο εκτέλεσης Microsoft Fabric που υποστηρίζεται από το Apache Spark ως Χρόνος εκτέλεσης Fabric.
Κύρια στοιχεία του χρόνου εκτέλεσης Fabric:
Apache Spark - μια ισχυρή κατανεμημένη υπολογιστική βιβλιοθήκη ανοιχτού κώδικα που επιτρέπει εργασίες επεξεργασίας και ανάλυσης δεδομένων μεγάλης κλίμακας. Το Apache Spark παρέχει μια ευέλικτη και υψηλής απόδοσης πλατφόρμα για τη διαχείριση δεδομένων και τις εμπειρίες επιστήμης δεδομένων.
Delta Lake - ένα επίπεδο αποθήκευσης ανοιχτού κώδικα που φέρνει συναλλαγές ACID και άλλα χαρακτηριστικά αξιοπιστίας δεδομένων στο Apache Spark. Ενοποιημένο στον χρόνο εκτέλεσης Fabric, το Delta Lake βελτιώνει τις δυνατότητες επεξεργασίας δεδομένων και εξασφαλίζει συνέπεια δεδομένων σε πολλές ταυτόχρονες λειτουργίες.
Ο εγγενής μηχανισμός εκτέλεσης είναι μια μετασχηματιστική βελτίωση για τους φόρτους εργασίας Apache Spark, προσφέροντας σημαντικά κέρδη απόδοσης εκτελώντας απευθείας ερωτήματα Spark σε υποδομή lakehouse. Ενοποιημένη απρόσκοπτα, δεν απαιτεί αλλαγές κώδικα και αποφεύγει το κλείδωμα προμηθευτών, υποστηρίζοντας τόσο τις μορφές Parquet όσο και delta σε όλα τα API Apache Spark στο Runtime 1.3 (Spark 3.5). Αυτός ο μηχανισμός αυξάνει τις ταχύτητες των ερωτημάτων έως και τέσσερις φορές ταχύτερα από το παραδοσιακό OSS Spark, όπως φαίνεται από το στοιχείο αναφοράς TPC-DS 1TB, μειώνοντας το λειτουργικό κόστος και βελτιώνοντας την αποδοτικότητα σε διάφορες εργασίες δεδομένων, συμπεριλαμβανομένης της πρόσληψης δεδομένων, του ETL, της ανάλυσης και των αλληλεπιδραστικών ερωτημάτων. Βασισμένο στο Velox της Meta και το Apache Url της Intel, βελτιστοποιεί τη χρήση πόρων ενώ παράλληλα διαχειρίζεται διάφορα σενάρια επεξεργασίας δεδομένων.
Πακέτα προεπιλεγμένου επιπέδου για Java/Scala, Python και R - πακέτα που υποστηρίζουν διαφορετικές γλώσσες προγραμματισμού και περιβάλλοντα. Αυτά τα πακέτα εγκαθίστανται και ρυθμίζονται αυτόματα, επιτρέποντας στους προγραμματιστές να εφαρμόσουν τις προτιμώμενες γλώσσες προγραμματισμού για εργασίες επεξεργασίας δεδομένων.
Ο χρόνος εκτέλεσης Microsoft Fabric βασίζεται σε ένα ισχυρό λειτουργικό σύστημα ανοιχτού κώδικα, το οποίο εξασφαλίζει συμβατότητα με διάφορες ρυθμίσεις παραμέτρων υλικού και απαιτήσεις συστήματος.
Παρακάτω μπορείτε να βρείτε μια ολοκληρωμένη σύγκριση βασικών στοιχείων, συμπεριλαμβανομένων των εκδόσεων Apache Spark, υποστηριζόμενων λειτουργικών συστημάτων, Java, Scala, Python, Delta Lake και R, για χρόνους εκτέλεσης που βασίζονται στο Apache Spark στην πλατφόρμα Microsoft Fabric.
Φιλοδώρημα
Να χρησιμοποιείτε πάντα την πιο πρόσφατη έκδοση χρόνου εκτέλεσης GA για τον φόρτο εργασίας παραγωγής σας, ο οποίος αυτήν τη στιγμή είναι ο Χρόνος εκτέλεσης 1.3.
Χρόνος εκτέλεσης 1.1 | Χρόνος εκτέλεσης 1.2 | Χρόνος εκτέλεσης 1.3 | |
---|---|---|---|
Apache Spark | 3.3.1 | 3.4.1 | 3.5.0 |
Λειτουργικό σύστημα | Ubuntu 18.04 | Μάρινερ 2.0 | Μάρινερ 2.0 |
Java | 8 | 11 | 11 |
Κλίμακα | 2.12.15 | 2.12.17 | 2.12.17 |
Python | 3,10 | 3,10 | 3.11 |
Delta Lake | 2.2.0 | 2.4.0 | 3,2 |
R | 4.2.2 | 4.2.2 | 4.4.1 |
Επισκεφτείτε τις διευθύνσεις Runtime 1.1, Runtime 1.2 ή Runtime 1.3 για να εξερευνήσετε λεπτομέρειες, νέες δυνατότητες, βελτιώσεις και σενάρια μετεγκατάστασης για τη συγκεκριμένη έκδοση χρόνου εκτέλεσης.
Στο Microsoft Fabric, τόσο ο μηχανισμός Spark όσο και οι υλοποιήσεις του Delta Lake ενσωματώνουν βελτιστοποιήσεις και δυνατότητες ειδικά για την πλατφόρμα. Αυτές οι δυνατότητες έχουν σχεδιαστεί για χρήση εγγενών ενοποιήσεων εντός της πλατφόρμας. Είναι σημαντικό να έχετε υπόψη ότι όλες αυτές οι δυνατότητες μπορούν να απενεργοποιηθούν για την επίτευξη τυπικής λειτουργικότητας του Spark και του Delta Lake. Οι χρόνοι εκτέλεσης Fabric για το Apache Spark περιλαμβάνουν:
- Η πλήρης έκδοση ανοιχτού κώδικα του Apache Spark.
- Μια συλλογή σχεδόν 100 ενσωματωμένων, διακριτών βελτιώσεων απόδοσης ερωτημάτων. Αυτές οι βελτιώσεις περιλαμβάνουν δυνατότητες όπως η προσωρινή αποθήκευση διαμερίσματος (η ενεργοποίηση του cache διαμερίσματος FileSystem για τη μείωση των κλήσεων μεταστάσεων) και η διασταυρούμενη σύνδεση στην προβολή ανυσματικών δευτερευουσών ερωτημάτων.
- Ενσωματωμένο έξυπνο cache.
Εντός του χρόνου εκτέλεσης Fabric για το Apache Spark και το Delta Lake, υπάρχουν εγγενείς δυνατότητες συγγραφέων που εξυπηρετούν δύο βασικούς σκοπούς:
- Προσφέρουν διαφοροποιημένες επιδόσεις για τη σύνταξη φόρτων εργασίας, βελτιστοποιώντας τη διαδικασία εγγραφής.
- Έχουν ως προεπιλογή τη βελτιστοποίηση V-Order των αρχείων Delta Parquet. Η βελτιστοποίηση της V-Order του Delta Lake είναι σημαντική για την παροχή ανώτερης απόδοσης ανάγνωσης σε όλους τους κινητήρες Fabric. Για να κατανοήσετε βαθύτερα τον τρόπο λειτουργίας της και τον τρόπο διαχείρισής της, ανατρέξτε στο αποκλειστικό άρθρο σχετικά με τη βελτιστοποίηση πινάκων Delta Lake και τη σειρά V.
Το Fabric υποστηρίζει πολλούς χρόνους εκτέλεσης, παρέχοντας στους χρήστες την ευελιξία να κάνουν απρόσκοπτη εναλλαγή μεταξύ τους, ελαχιστοποιώντας τον κίνδυνο ασυμβατότητας ή διακοπών.
Από προεπιλογή, όλοι οι νέοι χώροι εργασίας χρησιμοποιούν την πιο πρόσφατη έκδοση χρόνου εκτέλεσης, η οποία είναι αυτή τη στιγμή Χρόνος εκτέλεσης 1.3.
Για να αλλάξετε την έκδοση του χρόνου εκτέλεσης σε επίπεδο χώρου εργασίας, μεταβείτε στις ρυθμίσεις του Workspace>Data Engineering/Science>Spark ρυθμίσεις. Από την καρτέλα περιβάλλοντος
Μόλις κάνετε αυτή την αλλαγή, όλα τα στοιχεία που δημιουργούνται από το σύστημα εντός του χώρου εργασίας, συμπεριλαμβανομένων των Lakehouses, SJDs και Notebooks, θα λειτουργούν χρησιμοποιώντας τη νέα επιλεγμένη έκδοση χρόνου εκτέλεσης σε επίπεδο χώρου εργασίας, ξεκινώντας από την επόμενη περίοδο λειτουργίας Spark. Εάν χρησιμοποιείτε ένα σημειωματάριο με μια υπάρχουσα περίοδο λειτουργίας για μια εργασία ή οποιαδήποτε δραστηριότητα που σχετίζεται με lakehouse, αυτή η περίοδος λειτουργίας Spark συνεχίζεται ως έχει. Ωστόσο, ξεκινώντας από την επόμενη περίοδο λειτουργίας ή εργασία, θα εφαρμοστεί η επιλεγμένη έκδοση χρόνου εκτέλεσης.
Σε γενικές γραμμές, στόχος μας είναι η μετεγκατάσταση όλων των ρυθμίσεων Spark. Ωστόσο, εάν προσδιορίσουμε ότι η ρύθμιση Spark δεν είναι συμβατή με το Runtime B, εκδώνουμε ένα προειδοποιητικό μήνυμα και αποφεύγουμε την υλοποίηση της ρύθμισης.
Σε γενικές γραμμές, η προσέγγισή μας είναι να μετεγκαταστήσουμε όλες τις βιβλιοθήκες από τον Χρόνο εκτέλεσης Α στον Χρόνο εκτέλεσης Β, συμπεριλαμβανομένων των δημόσιων και των προσαρμοσμένων χρόνου εκτέλεσης. Εάν οι εκδόσεις Python και R παραμείνουν αμετάβλητες, οι βιβλιοθήκες θα πρέπει να λειτουργούν σωστά. Ωστόσο, για τα βάζα, υπάρχει σημαντική πιθανότητα να μην λειτουργούν λόγω αλλαγών στις εξαρτήσεις και άλλους παράγοντες όπως αλλαγές στη Σκάλα, τη Java, το Spark και το λειτουργικό σύστημα.
Ο χρήστης είναι υπεύθυνος για την ενημέρωση ή την αντικατάσταση τυχόν βιβλιοθηκών που δεν λειτουργούν με το Runtime B. Εάν υπάρχει διένεξη, το οποίο σημαίνει ότι ο Χρόνος εκτέλεσης B περιλαμβάνει μια βιβλιοθήκη που έχει αρχικά οριστεί στον Χρόνο εκτέλεσης Α, το σύστημα διαχείρισης βιβλιοθήκης μας θα προσπαθήσει να δημιουργήσει την απαραίτητη εξάρτηση για τον Χρόνο εκτέλεσης B με βάση τις ρυθμίσεις του χρήστη. Ωστόσο, η διαδικασία δόμησης θα αποτύχει σε περίπτωση διένεξης. Στο αρχείο καταγραφής σφαλμάτων, οι χρήστες μπορούν να δουν ποιες βιβλιοθήκες προκαλούν διενέξεις και να κάνουν προσαρμογές στις εκδόσεις ή τις προδιαγραφές τους.
Οι δυνατότητες του Delta Lake είναι πάντα συμβατές με προηγούμενες εκδόσεις, εξασφαλίζοντας ότι οι πίνακες που δημιουργούνται σε χαμηλότερη έκδοση του Delta Lake μπορούν να αλληλεπιδρούν απρόσκοπτα με υψηλότερες εκδόσεις. Ωστόσο, όταν είναι ενεργοποιημένες ορισμένες δυνατότητες (για παράδειγμα, χρησιμοποιώντας τη delta.upgradeTableProtocol(minReaderVersion, minWriterVersion)
μέθοδο , η συμβατότητα προς τα εμπρός με χαμηλότερες εκδόσεις του Delta Lake μπορεί να παραβιαστεί. Σε αυτές τις περιπτώσεις, είναι σημαντικό να τροποποιήσετε τους φόρτους εργασίας που αναφέρονται στους αναβαθμισμένους πίνακες ώστε να ευθυγραμμίζονται με μια έκδοση του Delta Lake που διατηρεί συμβατότητα.
Κάθε πίνακας Delta σχετίζεται με μια προδιαγραφή πρωτοκόλλου, ορίζοντας τις δυνατότητες που υποστηρίζει. Οι εφαρμογές που αλληλεπιδρούν με τον πίνακα, είτε για ανάγνωση είτε για εγγραφή, βασίζονται σε αυτή την προδιαγραφή πρωτοκόλλου για να προσδιορίσουν εάν είναι συμβατές με το σύνολο δυνατοτήτων του πίνακα. Εάν σε μια εφαρμογή δεν υπάρχει η δυνατότητα χειρισμού μιας δυνατότητας που αναφέρεται ως υποστηρίζεται στο πρωτόκολλο του πίνακα, δεν είναι δυνατή η ανάγνωση ή εγγραφή σε αυτόν τον πίνακα.
Η προδιαγραφή του πρωτοκόλλου διαιρείται σε δύο διακριτά στοιχεία: το πρωτόκολλο ανάγνωσης και το πρωτόκολλο εγγραφής. Επισκεφθείτε τη σελίδα "Πώς διαχειρίζεται η συμβατότητα δυνατοτήτων το Delta Lake;" για να διαβάσετε λεπτομέρειες σχετικά με αυτό.
Οι χρήστες μπορούν να εκτελέσουν την εντολή delta.upgradeTableProtocol(minReaderVersion, minWriterVersion)
εντός του περιβάλλοντος PySpark, καθώς και στα Spark SQL και Scala. Αυτή η εντολή τους επιτρέπει να ξεκινήσουν μια ενημέρωση στον πίνακα Delta.
Είναι σημαντικό να έχετε υπόψη ότι κατά την εκτέλεση αυτής της αναβάθμισης, οι χρήστες λαμβάνουν μια προειδοποίηση που υποδεικνύει ότι η αναβάθμιση της έκδοσης του πρωτοκόλλου Delta είναι μια μη εφάμιλλη διαδικασία. Αυτό σημαίνει ότι όταν εκτελεστεί η ενημέρωση, δεν μπορεί να αναιρεθεί.
Οι αναβαθμίσεις έκδοσης πρωτοκόλλου μπορεί πιθανώς να επηρεάσουν τη συμβατότητα των υπαρχόντων αναγνωστών πινάκων, συγγραφέων ή και των δύο Delta Lake. Επομένως, συνιστάται να συνεχίσετε προσεκτικά και να αναβαθμίσετε την έκδοση του πρωτοκόλλου μόνο όταν είναι απαραίτητο, όπως κατά την υιοθέτηση νέων δυνατοτήτων στο Delta Lake.
Επιπλέον, οι χρήστες θα πρέπει να επαληθεύουν ότι όλοι οι τρέχοντες και μελλοντικοί φόρτοι εργασίας και διαδικασίες παραγωγής είναι συμβατοί με πίνακες delta lake χρησιμοποιώντας τη νέα έκδοση πρωτοκόλλου για να διασφαλίσουν μια απρόσκοπτη μετάβαση και να αποτρέψουν τυχόν πιθανές διακοπές.
Στον τελευταίο χρόνο εκτέλεσης Fabric, έκδοση 1.3 και Ώρα εκτέλεσης Fabric, έκδοση 1.2, η προεπιλεγμένη μορφή πίνακα (spark.sql.sources.default
) είναι τώρα delta
. Σε προηγούμενες εκδόσεις του Χρόνου εκτέλεσης Fabric, έκδοση 1.1 και σε όλες τις Synapse Runtime για Apache Spark που περιέχουν Spark 3.3 ή νεότερη, η προεπιλεγμένη μορφή πίνακα ορίστηκε ως parquet
. Ελέγξτε τον πίνακα με τις λεπτομέρειες ρύθμισης παραμέτρων του Apache Spark για διαφορές μεταξύ των Azure Synapse Analytics και Microsoft Fabric.
Όλοι οι πίνακες που δημιουργούνται με χρήση Spark SQL, PySpark, Scala Spark και Spark R, κάθε φορά που παραλείπεται ο τύπος πίνακα, θα δημιουργούν τον πίνακα ως delta
από προεπιλογή. Εάν οι δέσμες ενεργειών ορίζουν ρητά τη μορφή πίνακα, αυτό θα γίνει σεβαστό. Η εντολή USING DELTA
στο Spark δημιουργεί εντολές πίνακα γίνεται πλεονάζουσα.
Τα σενάρια που αναμένουν ή υποθέτουν μορφή πίνακα parquet θα πρέπει να αναθεωρηθούν. Οι ακόλουθες εντολές δεν υποστηρίζονται στους πίνακες Delta:
ANALYZE TABLE $partitionedTableName PARTITION (p1) COMPUTE STATISTICS
ALTER TABLE $partitionedTableName ADD PARTITION (p1=3)
ALTER TABLE DROP PARTITION
ALTER TABLE RECOVER PARTITIONS
ALTER TABLE SET SERDEPROPERTIES
LOAD DATA
INSERT OVERWRITE DIRECTORY
SHOW CREATE TABLE
CREATE TABLE LIKE