Επιλογή πυρήνα σημειωματαρίου στο Microsoft Fabric

Τα σημειωματάρια στο Microsoft Fabric υποστηρίζουν τρεις τύπους πυρήνα: Python, Spark και T-SQL. Ο πυρήνας Spark υποστηρίζει τέσσερις γλώσσες—PySpark, SparkSQL, Scala και SparkR—όλες υποστηρίζονται από τον ίδιο υπολογισμό Spark. Αυτός ο οδηγός εστιάζει στην απόφαση μεταξύ του πυρήνα Python και του πυρήνα Spark, καθώς αυτοί οι πυρήνες είναι οι πιο κοινές επιλογές για φόρτους εργασίας μηχανικής δεδομένων. Και τα δύο εκτελούνται στην ίδια εμπειρία φορητού υπολογιστή, αλλά διαφέρουν ως προς το υπολογιστικό μοντέλο, την επεκτασιμότητα, τις δυνατότητες του κινητήρα και τη συμβατότητα Delta Lake. Αυτός ο οδηγός παρέχει μια ισορροπημένη αξιολόγηση για να σας βοηθήσει να επιλέξετε τον σωστό πυρήνα και να αποφύγετε κοινές παρανοήσεις σχετικά με το κόστος και την απόδοση.

Σημαντικό

Η επιλογή του πυρήνα του σημειωματάριου δεν αφορά απλώς το κόστος ή το μέγεθος των δεδομένων. Η υπολογιστική διαμόρφωση, οι απαιτήσεις χαρακτηριστικών Delta Lake, η ωριμότητα του κινητήρα και η αναμενόμενη ανάπτυξη δεδομένων παίζουν σημαντικό ρόλο στη λήψη της σωστής απόφασης.

Κατανόηση των επιλογών υπολογιστικής λειτουργίας σας

Μια κοινή παρανόηση είναι ότι ο πυρήνας της Python είναι πάντα φθηνότερος από τον πυρήνα του Spark για μικρούς φόρτους εργασίας δεδομένων. Στην πραγματικότητα, το κόστος εξαρτάται από το πώς ρυθμίζετε τον υπολογισμό για κάθε πυρήνα.

Υπολογισμός πυρήνα Python

Ο πυρήνας της Python εκτελείται σε ένα μηχάνημα ενός κόμβου που έχει ως προεπιλογή 2 vCores (1 CU) και μπορεί να ρυθμιστεί ώστε να ξεκινά έως και 64 vCores (32 CU). Αυτό το περιβάλλον δεν έχει κατανεμημένη εκτέλεση. Η αρχική πισίνα αρχικοποιείται σε περίπου 5 δευτερόλεπτα, καθιστώντας την γρήγορη για διαδραστική εργασία.

Υπολογισμός πυρήνα Spark

Ο πυρήνας Spark χρησιμοποιεί χώρους συγκέντρωσης Spark με πολλές επιλογές ρύθμισης παραμέτρων:

Διαμόρφωση συμπλέγματος vCores διαθέσιμοι στους εκτελεστές Ώρα έναρξης συνεδρίας CU που καταναλώνονται μετά την έναρξη της συνεδρίας
Ομάδα εκκίνησης (προεπιλογή) Κόμβοι εργασίας 8 πυρήνων, ενεργοποιημένη η αυτόματη κλιμάκωση. ξεκινά ως ένας ενιαίος κόμβος και κλιμακώνεται προληπτικά σε έναν αφοσιωμένο εργαζόμενο μέσα σε λίγα λεπτά από την έναρξη της συνεδρίας ~5 δευτερόλεπτα 8 CU (ελάχιστη, εκ των υστέρων προληπτική κλιμάκωση)
Ένας κόμβος*, 8-vCore (μέσω του Starter pool) Ο εκτελεστής 8 πυρήνων και ο οδηγός μοιράζονται τον ίδιο κόμβο ~5 δευτερόλεπτα (με προθερμασμένη πισίνα) 4 ΜΜ
Προσαρμοσμένος χώρος συγκέντρωσης ενός κόμβου*, 4 vCore Ο εκτελεστής 4 πυρήνων και ο οδηγός μοιράζονται τον ίδιο κόμβο Απαιτεί προσαρμοσμένη πισίνα. Η έναρξη της συνεδρίας είναι συνήθως μεταξύ 3-5 λεπτών 2 ΜΜ
Προσαρμοσμένη πισίνα πολλαπλών κόμβων Ζυγαριές με μέγεθος συστάδας Η έναρξη της συνεδρίας είναι συνήθως μεταξύ 3-5 λεπτών Ποικίλλει

Όταν χρησιμοποιείτε το χώρο συγκέντρωσης εκκίνησης, μια περίοδος λειτουργίας Spark 8-vCore ενός κόμβου ξεκινά σε περίπου 5 δευτερόλεπτα—συγκρίσιμη με τον πυρήνα της Python. Ένα σύμπλεγμα Spark ενός κόμβου διατηρεί το κόστος παρόμοιο με τον πυρήνα της Python, ενώ παρέχει πρόσβαση σε όλες τις εγγενείς δυνατότητες του Spark, συμπεριλαμβανομένου του Native Execution Engine (NEE).

Σημείωμα

Υπάρχουν δύο τρόποι για να ρυθμίσετε τις παραμέτρους των χώρων συγκέντρωσης Spark ενός κόμβου. Για τους περισσότερους φόρτους εργασίας, συνήθως συνιστάται η χρήση της πρώτης μεθόδου, Overprovisioned single-node. Η δεύτερη μέθοδος, ο κλασικός μονός κόμβος είναι καλύτερη όταν υπάρχουν βαριές διεργασίες προγράμματος οδήγησης, αλλά περιορίζει την ποσότητα των πόρων που μπορούν να χρησιμοποιηθούν από τους εκτελεστές του Spark.

  • Υπερβολικός μονός κόμβος: ξεκινήστε με ένα Spark Pool (δηλαδή, Starter Pool) που έχει ρυθμιστεί με ενεργοποιημένη την αυτόματη κλιμάκωση και τη δυναμική κατανομή με την αυτόματη κλιμάκωση ρυθμισμένη σε 1 έως > 1 κόμβους. Δημιουργήστε ένα στοιχείο περιβάλλοντος που αναφέρεται στο Spark Pool και ορίστε τον αριθμό των εκτελεστών σε 1. Τα σημειωματάρια που χρησιμοποιούν αυτό το περιβάλλον παρέχουν ένα σύμπλεγμα Spark ενός κόμβου, όπου τόσο το πρόγραμμα οδήγησης όσο και ο εκτελεστής μοιράζονται όλους τους πόρους.
  • Κλασικός μονός κόμβος: δημιουργήστε ένα Spark Pool με τον μέγιστο αριθμό κόμβων να έχει οριστεί σε 1. Αυτή η ρύθμιση παραμέτρων λειτουργεί με ενεργοποιημένη ή απενεργοποιημένη την αυτόματη κλιμάκωση και τη δυναμική κατανομή , καθώς η επιλογή δεν επηρεάζει τη στρατηγική παροχής. Τα σημειωματάρια που χρησιμοποιούν αυτό το Spark Pool έχουν 50% εικονικών πυρήνων που έχουν εκχωρηθεί στο πρόγραμμα οδήγησης και 50% εκχωρηθούν ως εκτελεστές.

Απόδοση ανά κλίμακα φόρτου εργασίας

Τα σημεία αναφοράς που συγκρίνουν το Fabric Spark με το Native Execution Engine με μηχανές Python ενός μηχανήματος (όπως Pandas, DuckDB ή Polars) σε φόρτους εργασίας ELT από άκρο σε άκρο δείχνουν σαφή μοτίβα με βάση την κλίμακα δεδομένων:

Κλίμακα δεδομένων (συμπιεσμένη) Πλεονέκτημα κινητήρα
Εξαιρετικά μικρό (< ~140 MB) Οι μηχανές Python μιας μηχανής (DuckDB, Polars) είναι πιο γρήγορες.
Μικρό (~1–2 GB) Οι μηχανές Python εξακολουθούν να έχουν ένα πλεονέκτημα, αλλά το Fabric Spark με NEE γίνεται ανταγωνιστικό καθώς αυξάνεται ο αριθμός των διαθέσιμων πυρήνων για κάθε κινητήρα, ιδιαίτερα για λειτουργίες βαριάς εγγραφής.
Μικρό-μεσαίο (~10–13 GB) Το Fabric Spark με το Native Execution Engine είναι ανταγωνιστικό ή ταχύτερο από τους περισσότερους κινητήρες ενός μηχανήματος. Οι μηχανές Python ενός μηχανήματος μπορεί να αντιμετωπίσουν σφάλματα εκτός μνήμης (OOM) σε χαμηλότερους αριθμούς vCore.
Μεσαίο και άνω (~100 GB+) Για τους περισσότερους φόρτους εργασίας, το Fabric Spark με το Native Execution Engine είναι ο ταχύτερος και πιο αξιόπιστος μηχανισμός.

Κλιμάκωση πέρα από τα μικρά δεδομένα

Λάβετε υπόψη τον ρυθμό αύξησης των δεδομένων κατά την επιλογή μιας μηχανής. Οι μη κατανεμημένες μηχανές Python λειτουργούν καλά για πραγματικά μικρά δεδομένα, αλλά η μετεγκατάσταση του κώδικά σας όταν τα δεδομένα υπερβαίνουν τα όριά τους είναι δαπανηρή. Ξεκινώντας με το Spark σε μια διαμόρφωση ενός κόμβου, μπορείτε να κλιμακωθείτε απρόσκοπτα σε μια διαμόρφωση πολλών κόμβων χωρίς να ξαναγράψετε τις διοχετεύσεις μηχανικής δεδομένων σας.

Συμβατότητα Delta Lake

Η συμβατότητα Delta Lake είναι κρίσιμης σημασίας κατά την επιλογή ενός κινητήρα. Το Fabric Spark έχει εγγενή, πλήρη υποστήριξη Delta Lake, ενώ οι μηχανές Python μπορεί να έχουν σημαντικά κενά:

Σημαντικό

Ο παρακάτω πίνακας υποστήριξης δυνατοτήτων αντικατοπτρίζει την κατάσταση κάθε μηχανής από τον Ιούνιο του 2026 και βασίζεται σε άμεσες δοκιμές σε σχέση με το Fabric Spark Runtime 1.3 και 2.0. Το οικοσύστημα λογισμικού ανοιχτού κώδικα (OSS) Python για το Delta Lake κινείται γρήγορα - τα delta-rs, DuckDB και Polars αποστέλλουν συχνές εκδόσεις που προσθέτουν περιοδικά εκτεταμένη υποστήριξη για το πρωτόκολλο Delta. Ελέγχετε πάντα με βάση την τρέχουσα τεκμηρίωση και τις σημειώσεις έκδοσης για κάθε κινητήρα προτού βασιστείτε σε ένα συγκεκριμένο χαρακτηριστικό στην παραγωγή:

Χαρακτηριστικό Delta Lake Σπινθήρας υφάσματος δέλτα-rs (Python) ΠάπιαDB Πολικοί
Ανάγνωση πινάκων Delta ✅ ✅ ✅ ✅
Σύνταξη πινάκων Delta ✅ ✅ Προσάρτηση, αντικατάσταση (συμπεριλαμβανομένης της κατηγόρησης), ΕΝΗΜΕΡΩΣΗ, ΔΙΑΓΡΑΦΗ, ΣΥΓΧΩΝΕΥΣΗ ⚠️ Μόνο INSERT (απαιτείται ATTACH ... (TYPE delta, READ_WRITE)), χωρίς UPDATE/DELETE/MERGE, χρησιμοποιήστε delta-rs για άλλες λειτουργίες εγγραφής ⚠️ Προσάρτηση, αντικατάσταση (συμπεριλαμβανομένης της κατηγόρησης), συγχώνευση μόνο. χωρίς ΕΝΗΜΕΡΩΣΗ/ΔΙΑΓΡΑΦΗ
Εγγυήσεις ACID / Αισιόδοξος Έλεγχος Ταυτοχρονισμού ✅ ✅ ⚠️ Το INSERT είναι μόνο προσάρτημα. καμία ανίχνευση εγγενών συγκρούσεων. Χρησιμοποιήστε το Delta-Rs με καρφίτσωμα έκδοσης για απομόνωση ανάγνωσης και εγγραφής ⚠️ OCC στις εγγραφές. Οι αναγνώσεις Polars βρίσκονται εκτός του ορίου συναλλαγής—απαιτεί ρητό καρφίτσωμα έκδοσης για απομόνωση ανάγνωσης και εγγραφής
Εξέλιξη σχήματος κατά την εγγραφή ✅ ✅ ❌ Δεν υπάρχει εξέλιξη σχήματος στο INSERT ✅
Αντιστοίχιση στηλών ✅ ❌ ✅ ❌
Διανύσματα διαγραφής (ανάγνωση) ✅ ❌ ✅ ✅
Διανύσματα διαγραφής (εγγραφή) ✅ ❌ ❌ ❌
Διαπλάτυνση κειμένου (ανάγνωση) ✅ ❌ ✅ ❌
Διαπλάτυνση κειμένου (εγγραφή) ✅ ❌ ❌ ❌
Παράλειψη αρχείων ✅ ✅ ✅ ✅
Διαμερισμένες εγγραφές ✅ ✅ ❌ Χρησιμοποιήστε delta-rs για να γράψετε με διαμέριση ✅
Υγρή ομαδοποίηση (εγγραφή) ✅ ❌ ❌ ❌
Ταξίδι στο χρόνο ✅ ✅ ✅ ✅
ΕΠΑΝΑΦΟΡΑ ✅ ✅ ❌ Χρήση δέλτα-rs για επαναφορά πινάκων ❌ Χρήση δέλτα-rs για επαναφορά πινάκων
Ρηχός κλώνος (δημιουργία) ✅ ❌ ❌ ❌
Ρηχός κλώνος (διαβάστε) ✅ ❌ ❌ ❌
Παρακολούθηση σειρών ✅ ⚠️ Οι αναγνώσεις και οι εγγραφές επιτυγχάνουν, αλλά η παρακολούθηση _metadata γραμμών δεν είναι προσβάσιμη. Οι διοχετεύσεις που βασίζονται σε row_id για την κατάργηση διπλότυπων δεδομένων ή την καταγραφή δεδομένων αλλαγής (CDC) πρέπει να χρησιμοποιούν το Spark για ανάγνωση ⚠️ Οι αναγνώσεις και οι εγγραφές επιτυγχάνουν, αλλά η παρακολούθηση _metadata γραμμών δεν είναι προσβάσιμη. Οι διοχετεύσεις που βασίζονται σε row_id για κατάργηση διπλότυπων δεδομένων ή CDC πρέπει να χρησιμοποιούν το Spark για ανάγνωση ⚠️ Οι αναγνώσεις και οι εγγραφές επιτυγχάνουν, αλλά η παρακολούθηση _metadata γραμμών δεν είναι προσβάσιμη. Οι διοχετεύσεις που βασίζονται σε row_id για κατάργηση διπλότυπων δεδομένων ή CDC πρέπει να χρησιμοποιούν το Spark για ανάγνωση
Στήλες ταυτότητας (ανάγνωση) ✅ ✅ ✅ ✅
Στήλες ταυτότητας (εγγραφή) ✅ ❌ ❌ ❌
Δημιουργημένες στήλες (ανάγνωση) ✅ ✅ ✅ ✅
Δημιουργημένες στήλες (εγγραφή) ✅ ❌ ❌ ❌
Αλλαγή ροής δεδομένων (ανάγνωση) ✅ ✅ ❌ Χρήση delta-rs για ανάγνωση ροής δεδομένων αλλαγής ❌ Χρήση delta-rs για ανάγνωση ροής δεδομένων αλλαγής
Αλλαγή ροής δεδομένων (εγγραφή) ✅ ❌ ❌ ❌
Σημεία ελέγχου V2 (διαβάστε) ✅ ❌ ✅ ❌
Σημεία ελέγχου V2 (εγγραφή) ✅ ❌ ❌ ❌
Διάστημα σημείου ελέγχου ✅ Δυνατότητα διαμόρφωσης (προεπιλογή 10) ⚠️ Δυνατότητα διαμόρφωσης (προεπιλογή 100) ❌ Το INSERT δεν γράφει σημεία ελέγχου. Το log μεγαλώνει απεριόριστα χωρίς εξωτερική συντήρηση μέσω delta-rs ⚠️ Δυνατότητα διαμόρφωσης (προεπιλογή 100)
ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ✅ ✅ ❌ Χρησιμοποιήστε delta-rs για βελτιστοποίηση ❌ Χρησιμοποιήστε delta-rs για βελτιστοποίηση
Αυτόματη συμπύκνωση ✅ ❌ ❌ ❌
ΚΕΝΟ ✅ ❌ Κίνδυνος: συσσώρευση ορφανών αρχείων ❌ Κίνδυνος: συσσώρευση ορφανών αρχείων ❌ Κίνδυνος: συσσώρευση ορφανών αρχείων
ΚΕΝΟ LITE ✅ ✅ ❌ Χρησιμοποιήστε delta-rs για να αδειάσετε το lite ❌ Χρησιμοποιήστε delta-rs για να αδειάσετε το lite

Βασικές επιπτώσεις:

  • Νεότερες δυνατότητες Delta: Η υποστήριξη για νεότερες δυνατότητες Delta Lake—συμπεριλαμβανομένης της διεύρυνσης τύπου, των σημείων ελέγχου v2, της δημιουργίας συμπλεγμάτων υγρών, των στηλών ταυτότητας, των εγγραφών αλλαγής ροής δεδομένων και των ρηχών αναγνώσεων κλώνων—είναι ασυνεπής ή απουσιάζει σε όλες τις μηχανές OSS Python. Εάν η διοχέτευση δεδομένων σας εξαρτάται από οποιαδήποτε από αυτές τις δυνατότητες, χρησιμοποιήστε το Fabric Spark. Αντιμετωπίστε τις μηχανές Python ως συμπλήρωμα του Spark για συγκεκριμένους φόρτους εργασίας (ελαφριές αναγνώσεις, τοπική ανάπτυξη, απλές προσαρτήσεις) και όχι ως αντικατάσταση γενικής χρήσης.

  • Διανύσματα διαγραφής: Τα διανύσματα διαγραφής είναι μια βέλτιστη πρακτική για πίνακες Delta (ενεργοποιημένα από προεπιλογή ξεκινώντας από το Fabric Spark Runtime 2.0), καθώς βελτιώνουν σημαντικά τις επιδόσεις των λειτουργιών MERGE, UPDATE και DELETE μέσω μιας στρατηγικής συγχώνευσης κατά την ανάγνωση. Καμία μηχανή Python (delta-rs, DuckDB ή Polars) δεν υποστηρίζει την εγγραφή διανυσμάτων διαγραφής. Εάν χρησιμοποιείτε οποιαδήποτε μηχανή Python για εγγραφή σε πίνακες που έχουν ενεργοποιημένα τα διανύσματα διαγραφής, αντιμετωπίζετε σφάλματα συμβατότητας.

  • Εγγυήσεις ACID: Δεν παρέχουν όλες οι μηχανές Python εγγενείς εγγυήσεις ACID. Το Delta-rs υποστηρίζει αισιόδοξο έλεγχο ταυτοχρονισμού (OCC) για λειτουργίες συγχώνευσης, ενημέρωσης και διαγραφής. Ωστόσο, οι αγωγοί πολλαπλών μηχανών όπου το DuckDB ή το Polars εκτελεί την ανάγνωση και το delta-rs εκτελεί την εγγραφή απαιτούν ρητό καρφίτσωμα έκδοσης και στις δύο πλευρές για να διατηρηθεί η απομόνωση ανάγνωσης-εγγραφής. Το DuckDB INSERT είναι μια λειτουργία μόνο για προσάρτηση χωρίς ανίχνευση διενέξεων.

  • Σημεία ελέγχου: Δεν γράφουν όλες οι μηχανές Python σημεία ελέγχου και εκείνες οι μηχανές που κάνουν προεπιλογή σε κάθε 100 υποβολές αντί για την προεπιλογή του Spark για κάθε 10 υποβολές. Το DuckDB INSERT δεν γράφει ποτέ σημεία ελέγχου, με αποτέλεσμα το αρχείο καταγραφής συναλλαγών Delta να αυξάνεται απεριόριστα. Εξετάστε το ενδεχόμενο να ορίσετε ένα χαμηλότερο διάστημα σημείων ελέγχου σε delta-rs και Polars και εκτελέστε περιοδική συντήρηση delta-rs για πίνακες γραμμένους από το DuckDB.

  • Παρακολούθηση γραμμών: Όλες οι μηχανές Python μπορούν να διαβάζουν και να γράφουν σε πίνακες με ενεργοποιημένη την παρακολούθηση γραμμών, αλλά η _metadata στήλη που περιέχει row_id και row_commit_version δεν είναι προσβάσιμη εκτός του Spark. Οι διοχετεύσεις στις οποίες βασίζονται row_id για την κατάργηση διπλότυπων δεδομένων ή το CDC πρέπει να χρησιμοποιούν το Spark για ανάγνωση.

  • ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ και ΚΕΝΟ: Οι μηχανές Python βασίζονται στη deltalake βιβλιοθήκη για συμπύκνωση και κενό. Ενώ το delta-rs μπορεί να είναι γρήγορο για αυτές τις λειτουργίες, αυτή η προσέγγιση εισάγει επιπλέον διαχείριση εξάρτησης και οι λειτουργίες δεν ενορχηστρώνονται εγγενώς όπως είναι στο Spark. Οι πίνακες που γράφονται αποκλειστικά μέσω μηχανών Python συγκεντρώνουν μικρά αρχεία και απεριόριστα αρχεία καταγραφής συναλλαγών χωρίς ρητή συντήρηση.

  • Ρηχοί κλώνοι: Οι μηχανές Python δεν υποστηρίζουν την ανάγνωση πινάκων που δημιουργούνται μέσω ρηχού κλώνου λόγω περιορισμών απόλυτης ανάλυσης διαδρομής. Καμία μηχανή Python δεν υποστηρίζει τη δημιουργία ρηχών κλώνων.

Ωριμότητα κινητήρα και υποστήριξη της Microsoft

Υποστήριξη Fabric Spark

Το Fabric Spark είναι το πιρούνι ανοιχτού κώδικα Apache Spark της Microsoft. Η Microsoft διατηρεί και αποστέλλει το χρόνο εκτέλεσης, δηλαδή:

  • Η Microsoft υποστηρίζει εσωτερικά Spark και Delta Lake από άκρο σε άκρο, συμπεριλαμβανομένου του Native Execution Engine (NEE), το οποίο βασίζεται σε Velox και Apache Gluten.
  • Μπορείτε να ανοίξετε δελτία υποστήριξης για τη συμπεριφορά του Spark, τα σχέδια ερωτημάτων, τα προβλήματα μνήμης και τα σφάλματα του μηχανισμού.
  • Οι βελτιώσεις επιδόσεων αποστέλλονται συνεχώς ως μέρος των ενημερώσεων χρόνου εκτέλεσης του Fabric—ο υπάρχων κώδικας γίνεται πιο γρήγορος χωρίς αλλαγές κώδικα.

Υποστήριξη κινητήρα Python

Η Microsoft δεν διατηρεί μια διακλάδωση μηχανών OSS Python όπως το DuckDB ή το Polars. Η υποστήριξη περιορίζεται σε ζητήματα στις ενοποιήσεις OneLake που αποστέλλονται ως μέρος του χρόνου εκτέλεσης του Fabric, όπως ο έλεγχος ταυτότητας ή η πρόσβαση στο σύστημα αρχείων. Εάν αντιμετωπίσετε μια παλινδρόμηση απόδοσης, ένα σφάλμα μηχανής ή ένα κατεστραμμένο API μεταξύ των εκδόσεων της βιβλιοθήκης, πρέπει να αλληλεπιδράσετε απευθείας με τις κοινότητες ανοιχτού κώδικα για αυτές τις βιβλιοθήκες.

Λειτουργική ωριμότητα

Η πραγματική εμπειρία δημιουργίας σημείων αναφοράς ELT από άκρο σε άκρο με αυτούς τους κινητήρες υπογραμμίζει σημαντικές διαφορές στη λειτουργική ωριμότητα:

  • Σπίθα: Ο κώδικας που έχει γραφτεί για μία έκδοση χρόνου εκτέλεσης εκτελείται χωρίς τροποποίηση σε νεότερες εκδόσεις και αποδίδει ταχύτερα λόγω της συνεχούς επένδυσης μηχανικής της Microsoft. Το περιβάλλον εργασίας χρήστη Spark και η τηλεμετρία Fabric παρέχουν ζωντανή παρακολούθηση με πλήρη ορατότητα σε ενεργά ερωτήματα, σχέδια εκτέλεσης και ιστορικές εκτελέσεις εργασιών.
  • DuckDB και Polars: Οι αλλαγές API και συμπεριφοράς μεταξύ των εκδόσεων μπορεί να απαιτούν ανακατασκευή κώδικα καθώς οι μηχανές ωριμάζουν και τα API εξελίσσονται. Και οι δύο μηχανές δεν διαθέτουν ζωντανή παρακολούθηση - όταν μια εργασία διαρκεί περισσότερο από το αναμενόμενο, δεν υπάρχει ισοδύναμο με το περιβάλλον εργασίας χρήστη Spark για να κατανοήσετε τι συμβαίνει. Ο έλεγχος ταυτότητας στο OneLake μπορεί να απαιτεί λύσεις για συγκεκριμένες εκδόσεις.
  • Επιβάρυνση στοίβας δεδομένων με δυνατότητα σύνθεσης: Η χρήση DuckDB ή Polars για μια πλήρη ροή εργασίας ELT συνήθως σημαίνει συρραφή πολλαπλών βιβλιοθηκών (για παράδειγμα, DuckDB για σάρωση και μετασχηματισμό δεδομένων, delta-rs για εγγραφές και συντήρηση). Η συμβατότητα της βιβλιοθήκης πρέπει να διατηρείται μεταξύ των στοιχείων και θα πρέπει να λαμβάνεται υπόψη κάθε φορά που η έκδοση της βιβλιοθήκης αναβαθμίζεται πέρα από αυτό που αποστέλλεται στο χρόνο εκτέλεσης.

Οδηγίες λήψης αποφάσεων

Χρησιμοποιήστε τον πυρήνα της Python όταν

  • Τα δεδομένα σας είναι μικρά—κάτω από περίπου 1 GB συμπιεσμένα—και η ακατέργαστη απόδοση σε μηχανές ενός μηχανήματος έχει μεγαλύτερη σημασία.
  • Δημιουργείτε ελαφριά ενορχήστρωση API, ενσωματώσεις REST/gRPC ή αυτοματισμό ροής ελέγχου όπου ο κατανεμημένος υπολογισμός προσθέτει περιττά έξοδα.
  • Κάνετε γρήγορη αλληλεπιδραστική εξερεύνηση μικρών συνόλων δεδομένων όπου ο λανθάνων χρόνος ερωτημάτων ad-hoc είναι η προτεραιότητα.
  • Ο φόρτος εργασίας σας απαιτεί μια παλαιότερη έκδοση Python από αυτήν που αποστέλλεται στον τρέχοντα χρόνο εκτέλεσης του Fabric Spark.
  • Κατανοείτε και αποδέχεστε τους περιορισμούς δυνατοτήτων Delta Lake της μηχανής Python που χρησιμοποιείτε.

Χρησιμοποιήστε τον πυρήνα Spark όταν

  • Τα δεδομένα σας είναι 1 GB ή μεγαλύτερα σε συμπιεσμένη μορφή ή αναμένετε ότι τα δεδομένα θα αυξηθούν σε αυτήν την κλίμακα.
  • Χρειάζεστε πλήρη συμβατότητα με το Delta Lake, συμπεριλαμβανομένων των διανυσμάτων διαγραφής, της αντιστοίχισης στηλών, της διεύρυνσης τύπου, των εγγυήσεων OPTIMIZE, VACUUM και ACID.
  • Χρειάζεστε χαρακτηριστικά επιπέδου παραγωγής, όπως μεταβλητές περιβάλλοντος, διαχείριση βιβλιοθήκης βάσει στοιχείων, υψηλό συγχρονισμό και προγραμματισμό εργασιών FAIR ή first-in, first-out (FIFO).
  • Χρειάζεστε ζωντανή παρακολούθηση και πλήρη λειτουργική ορατότητα στις εργασίες που εκτελούνται.
  • Βασίζεστε σε API εγγενούς Spark, όπως MLlib, Spark SQL ή Spark Streaming.
  • Θέλετε ολοκληρωμένη υποστήριξη της Microsoft για τον μηχανισμό επεξεργασίας δεδομένων σας.
  • Θέλετε τη δυνατότητα κλιμάκωσης από υπολογισμό ενός κόμβου σε υπολογισμό πολλών κόμβων χωρίς επανεγγραφή κώδικα.
  • Πρέπει να συντάξετε σημειωματάρια σε PySpark, SparkSQL, Scala ή SparkR.

Συμβουλή

Για φόρτους εργασίας στη συμπιεσμένη κλίμακα 1 GB ή μεγαλύτερη, εξετάστε το ενδεχόμενο να ξεκινήσετε με ένα σύμπλεγμα Spark 8 vCore ενός κόμβου χρησιμοποιώντας το χώρο συγκέντρωσης εκκίνησης. Λαμβάνετε σχεδόν άμεσους χρόνους έναρξης περιόδου λειτουργίας, πλήρεις δυνατότητες Fabric Spark, συμπεριλαμβανομένου του NEE, και τη δυνατότητα κλιμάκωσης σε πολλούς κόμβους όταν χρειάζεται—όλα αυτά ενώ λειτουργείτε σε έναν μόνο κόμβο όπως ο πυρήνας Python.

Βασικές διαφορές με μια ματιά

Κατηγορία Πυρήνας Python Πυρήνας σπινθήρα
Προεπιλεγμένος υπολογισμός Εικονική μηχανή (VM) ενός πυρήνα 2 vCore (με δυνατότητα κλιμάκωσης έως 64 vCore) Ομάδα εκκίνησης: Κόμβοι εργαζομένων 8-vCore με αυτόματη κλιμάκωση
Ελάχιστη διαμόρφωση ενός κόμβου 2 εικονικοί πυρήνες 8 vCores (ομάδα εκκίνησης, εκκίνηση ~5 δευτερολέπτων). 4 vCores (προσαρμοσμένη πισίνα, μεγαλύτερη εκκίνηση)
Χρόνος εκκίνησης ~5 δευτερόλεπτα ~5 δευτερόλεπτα (αρχική πισίνα). περισσότερο για προσαρμοσμένες πισίνες
Κατανεμημένη εκτέλεση όχι Όχι
Υποστηριζόμενες γλώσσες Πύθωνας PySpark, SparkSQL, Scala, SparkR
Έκδοση Python Διατίθενται πολλές εκδόσεις Συνδέεται με την έκδοση χρόνου εκτέλεσης Fabric Spark
Delta Lake (πλήρης υποστήριξη δυνατοτήτων) όχι Όχι
Ζωντανή παρακολούθηση Περιορισμένη Πλήρης (Σελίδα παρακολούθησης εργασιών + Spark UI)
Υποστήριξη μηχανισμού Microsoft Μόνο ενσωματώσεις OneLake Υποστήριξη πλήρους χρόνου εκτέλεσης
Πρόσβαση στη βιβλιοθήκη Python εγκατάσταση pip Εγκατάσταση PIP + Στοιχεία περιβάλλοντος
API εγγενών σπινθήρων (MLlib, ροής) όχι Όχι
Χαρακτηριστικά παραγωγής (περιβάλλον, περιβάλλοντα) Περιορισμένη Γεμάτος
Υποστήριξη υψηλής ταυτόχρονης χρήσης όχι Όχι
V-order για γρήγορα σημασιολογικά μοντέλα Direct Lake όχι Όχι
Cache χώρου αποθήκευσης αντικειμένων που επιτρέπει την επιτάχυνση των επαναλαμβανόμενων αναγνώσεων Εξαρτάται από τον κινητήρα (το DuckDB έχει ενσωματωμένη προσωρινή αποθήκευση, το Polars όχι) Ναι (Έξυπνη κρυφή μνήμη)
Κλιμακώνεται σε πολλούς κόμβους όχι Όχι

Γλωσσάριο

  • Συναλλαγές ACID: Ένα σύνολο ιδιοτήτων (Ατομικότητα, Συνέπεια, Απομόνωση, Ανθεκτικότητα) που εγγυώνται την αξιόπιστη επεξεργασία των λειτουργιών της βάσης δεδομένων. Η Delta Lake υλοποιεί τη σημασιολογία ACID χρησιμοποιώντας αισιόδοξο έλεγχο συγχρονισμού και αρχεία καταγραφής συναλλαγών.
  • Optimistic Concurrency Control (OCC): Μια στρατηγική συγχρονισμού όπου οι συναλλαγές προχωρούν χωρίς κλείδωμα και, στη συνέχεια, επαληθεύστε κατά τη στιγμή της δέσμευσης ότι δεν υπήρξαν αντικρουόμενες αλλαγές. Η λίμνη Delta χρησιμοποιεί OCC. Οι αγωγοί cross-engine (για παράδειγμα, οι αναγνώσεις Polars ακολουθούμενες από εγγραφές delta-rs) απαιτούν ρητό καρφίτσωμα έκδοσης για τη διατήρηση της απομόνωσης.
  • Αυτόματη συμπύκνωση: Μια δυνατότητα Delta Lake στον χρόνο εκτέλεσης του Fabric Spark που συγχωνεύει αυτόματα μικρά αρχεία σε μεγαλύτερα μετά από λειτουργίες εγγραφής, μειώνοντας τον κατακερματισμό του αρχείου χωρίς ξεχωριστό βήμα OPTIMIZE.
  • Αλλαγή ροής δεδομένων (CDF): Μια δυνατότητα Delta Lake που καταγράφει αλλαγές σε επίπεδο σειράς (εισαγωγή, ενημέρωση, διαγραφή) σε έναν πίνακα, επιτρέποντας τη σταδιακή επεξεργασία δεδομένων και τις διοχετεύσεις CDC. Μόνο το Fabric Spark υποστηρίζει την εγγραφή μεταδεδομένων Change Data Feed (CDF). Οι μηχανές OSS Python μπορούν να το διαβάσουν αλλά όχι να το παράγουν.
  • Αντιστοίχιση στηλών: Μια δυνατότητα Delta Lake που επιτρέπει τη μετονομασία ή την απόρριψη στηλών χωρίς να ξαναγραφτούν τα υποκείμενα αρχεία Parquet. Υποστηρίζεται από Fabric Spark. Δεν υποστηρίζεται από delta-rs ή Polars.
  • delta-rs: Μια υλοποίηση Rust ανοιχτού κώδικα του πρωτοκόλλου Delta Lake με συνδέσεις Python (το deltalake πακέτο PyPI). Παρέχει υποστήριξη ανάγνωσης/εγγραφής Delta σε περιβάλλοντα OSS Python, αλλά έχει στενότερη κάλυψη δυνατοτήτων από delta-spark εκείνη που υποστηρίζει τον χρόνο εκτέλεσης του Fabric Spark.
  • Διανύσματα διαγραφής: Μια βελτιστοποίηση Delta Lake που χρησιμοποιεί συγχώνευση κατά την ανάγνωση για να μειώσει τον όγκο των δεδομένων που επανεγγράφονται κατά τη διάρκεια των λειτουργιών MERGE, UPDATE και DELETE. Ενεργοποιημένο από προεπιλογή στο Fabric Spark Runtime 2.0. Δεν υποστηρίζεται για εγγραφές από οποιονδήποτε μηχανισμό OSS Python.
  • ΔΙΚΑΙΟΣ προγραμματισμός: Μια πολιτική προγραμματισμού Spark που κατανέμει δίκαια τους πόρους του συμπλέγματος σε ταυτόχρονες εργασίες, διασφαλίζοντας ότι καμία μεμονωμένη εργασία δεν μονοπωλεί το σύμπλεγμα.
  • Προγραμματισμός FIFO: Μια πολιτική προγραμματισμού Spark που εκτελεί εργασίες με σειρά προτεραιότηταςFirst-Out, δίνοντας προτεραιότητα στην πρώτη εργασία που υποβλήθηκε.
  • Liquid Clustering: Μια δυνατότητα Delta Lake που αναδιοργανώνει σταδιακά τα δεδομένα για βέλτιστη απόδοση ερωτημάτων χωρίς να απαιτείται ρητή κατάτμηση. Υποστηρίζεται μόνο από το Fabric Spark.
  • NEE (Native Execution Engine): Μια διανυσματική μηχανή ερωτημάτων C++ που βασίζεται σε Velox και Apache Gluten που επιταχύνει τους φόρτους εργασίας Fabric Spark. Το NEE είναι διαθέσιμο χωρίς επιπλέον υπολογιστικό κόστος και δεν απαιτεί αλλαγές κώδικα.
  • Παρακολούθηση σειράς: Μια λειτουργία Delta Lake που εκχωρεί έναν στάβλο row_id και row_commit_version σε κάθε σειρά μέσω μιας _metadata στήλης. Όλοι οι μηχανισμοί μπορούν να διαβάζουν και να γράφουν σε πίνακες με ενεργοποιημένη την παρακολούθηση γραμμών, αλλά μόνο το Fabric Spark μπορεί να έχει πρόσβαση στα περιεχόμενα της _metadata στήλης.
  • Χώρος συγκέντρωσης Spark: Ένας κοινόχρηστος υπολογιστικός πόρος για την εκτέλεση κατανεμημένων φόρτων εργασίας Spark. Η ομάδα εκκίνησης παρέχει προθερμασμένους κόμβους για σχεδόν στιγμιαίους χρόνους έναρξης συνεδρίας (~5 δευτερόλεπτα) με ενεργοποιημένη την αυτόματη κλιμάκωση από προεπιλογή.
  • V-order: Μια βελτιστοποίηση εγγραφής Fabric που ταξινομεί και συμπιέζει δεδομένα Parquet με τρόπο που βελτιώνει τις επιδόσεις ανάγνωσης για σημασιολογικά μοντέλα Power BI Direct Lake και άλλες διαδρομές ανάγνωσης Fabric.
  • Έξυπνο cache: Ένα έξυπνο cache δίσκου στο Fabric Spark που επιταχύνει τις επαναλαμβανόμενες αναγνώσεις των ίδιων αρχείων πίνακα Delta αποθηκεύοντας δεδομένα αρχείων στο cache τοπικά στους κόμβους εκτέλεσης.