Έξυπνο cache στο Microsoft Fabric
Η έξυπνη δυνατότητα cache λειτουργεί απρόσκοπτα στο παρασκήνιο και αποθηκεύει στο cache δεδομένα για να επιταχύνει την εκτέλεση των εργασιών Apache Spark στο Microsoft Fabric, όπως διαβάζουν από τον χώρο αποθήκευσης OneLake ή Azure Data Lake Υπηρεσία αποθήκευσης (ADLS) Gen2 μέσω συντομεύσεων. Επίσης, εντοπίζει αυτόματα τις αλλαγές στα υποκείμενα αρχεία και ανανεώνει αυτόματα τα αρχεία στο cache, παρέχοντάς σας τα πιο πρόσφατα δεδομένα. Όταν το μέγεθος του cache φτάσει στο όριό του, το cache δημοσιεύει αυτόματα τα ελάχιστα αναγνωσμένα δεδομένα για να δημιουργήσετε χώρο για πιο πρόσφατα δεδομένα. Αυτή η δυνατότητα μειώνει το συνολικό κόστος ιδιοκτησίας, βελτιώνοντας την απόδοση έως και 60% στις επόμενες αναγνώσεις των αρχείων που αποθηκεύονται στο διαθέσιμο cache.
Όταν ο μηχανισμός Apache Spark στο Microsoft Fabric υποβάλει ερώτημα σε ένα αρχείο ή πίνακα από το lakehouse, πραγματοποιεί μια κλήση στον απομακρυσμένο χώρο αποθήκευσης για να διαβάσει τα υποκείμενα αρχεία. Με κάθε αίτηση ερωτήματος για ανάγνωση των ίδιων δεδομένων, ο μηχανισμός Spark πρέπει να κάνει μια κλήση στον απομακρυσμένο χώρο αποθήκευσης κάθε φορά. Αυτή η πλεονάζουσα διαδικασία προσθέτει λανθάνοντα χρόνο στον συνολικό χρόνο επεξεργασίας. Το Spark έχει την απαίτηση προσωρινής αποθήκευσης ότι πρέπει να ορίσετε με μη αυτόματο τρόπο και να αποδεσμεύσετε το cache για να ελαχιστοποιήσετε τον λανθάνοντα χρόνου και να βελτιώσετε τις συνολικές επιδόσεις. Ωστόσο, αυτή η απαίτηση μπορεί να οδηγήσει σε μη ενημερωμένα δεδομένα εάν αλλάξουν τα υποκείμενα δεδομένα.
Το έξυπνο cache απλοποιεί τη διαδικασία αποθηκεύοντας αυτόματα στο cache κάθε ανάγνωση που βρίσκεται στον εκχωρημένο χώρο αποθήκευσης cache σε κάθε κόμβο Spark όπου τα αρχεία δεδομένων αποθηκεύονται προσωρινά στο SSD. Κάθε αίτηση για ένα αρχείο ελέγχει αν το αρχείο υπάρχει στο cache τοπικού κόμβου και συγκρίνει την ετικέτα από τον απομακρυσμένο χώρο αποθήκευσης για να διαπιστώσει αν το αρχείο είναι μη ενημερωμένο. Εάν το αρχείο δεν υπάρχει ή εάν το αρχείο είναι μη ενημερωμένο, ο Spark διαβάζει το αρχείο και το αποθηκεύει στο cache. Όταν το cache γεμίσει, το αρχείο με τον παλαιότερο χρόνο τελευταίας πρόσβασης καταργείται από το cache για να επιτραπεί η εμφάνιση πιο πρόσφατων αρχείων.
Το έξυπνο cache είναι ένα μοναδικό cache ανά κόμβο. Εάν χρησιμοποιείτε έναν μεσαίου μεγέθους κόμβο και εκτελείστε με δύο μικρά εκτελέσεις σε αυτόν τον μοναδικό κόμβο, οι δύο εκτελέσεις μοιράζονται το ίδιο cache. Επίσης, αυτή η προσωρινή αποθήκευση σε επίπεδο αρχείου δεδομένων επιτρέπει σε πολλά ερωτήματα να χρησιμοποιούν το ίδιο cache εάν έχουν πρόσβαση στα ίδια δεδομένα ή αρχεία δεδομένων.
Πώς λειτουργεί
Στο Microsoft Fabric (Χρόνος εκτέλεσης 1.1 και 1.2), η έξυπνη προσωρινή αποθήκευση ενεργοποιείται από προεπιλογή για όλους τους χώρους εργασίας Spark για όλους τους χώρους εργασίας με μέγεθος cache 50%. Το πραγματικό μέγεθος του διαθέσιμου χώρου αποθήκευσης και του μεγέθους του cache σε κάθε κόμβο εξαρτάται από την οικογένεια κόμβου και το μέγεθος του κόμβου.
Πότε να χρησιμοποιείτε έξυπνο cache
Αυτή η δυνατότητα σάς ωφελεί εάν:
Ο φόρτος εργασίας σας απαιτεί ανάγνωση του ίδιου αρχείου πολλές φορές και το μέγεθος του αρχείου χωράει στο cache.
Ο φόρτος εργασίας σας χρησιμοποιεί πίνακες Delta Lake, μορφές αρχείων Parquet ή CSV.
Δεν βλέπετε το πλεονέκτημα του έξυπνου cache εάν:
Διαβάζετε ένα αρχείο που υπερβαίνει το μέγεθος του cache. Σε αυτή την περίπτωση, μπορεί να εκκαθαριστεί η αρχή των αρχείων και τα επόμενα ερωτήματα πρέπει να επανεμφανιστούν τα δεδομένα από τον απομακρυσμένο χώρο αποθήκευσης. Σε αυτή την περίπτωση, δεν βλέπετε κανένα όφελος από το έξυπνο cache και μπορεί να θέλετε να αυξήσετε το μέγεθος ή/και το μέγεθος του κόμβου στο cache.
Ο φόρτος εργασίας σας απαιτεί μεγάλες ποσότητες τυχαίας σειράς. Η απενεργοποίηση του έξυπνου cache απελευθερώνει διαθέσιμο χώρο για να αποτρέψει την αποτυχία της εργασίας σας λόγω ανεπαρκούς χώρου αποθήκευσης.
Ενεργοποίηση και απενεργοποίηση της έξυπνης cache
Μπορείτε να απενεργοποιήσετε ή να ενεργοποιήσετε το έξυπνο cache σε μια περίοδο λειτουργίας, εκτελώντας τον ακόλουθο κώδικα στο σημειωματάριό σας ή ορίζοντας αυτήν τη ρύθμιση παραμέτρων σε επίπεδο χώρου εργασίας ή στοιχείου περιβάλλοντος.
spark.conf.set("spark.synapse.vegas.useCache", "false/true")