Κοινοποίηση μέσω


Ρύθμιση του μεγέθους των αρχείων δεδομένων πίνακα Delta

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

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

Ρυθμιζόμενες λειτουργίες διάταξης δεδομένων

Βελτιστοποίηση

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

Αυτόματη συμπύκνωση

Η αυτόματη συμπίεση αξιολογεί αυτόματα την υγεία του διαμερίσματος μετά από κάθε λειτουργία εγγραφής. Όταν ανιχνεύει υπερβολικό κατακερματισμό αρχείων (πάρα πολλά μικρά αρχεία) μέσα σε ένα διαμέρισμα, ενεργοποιεί μια σύγχρονη OPTIMIZE λειτουργία αμέσως μετά την ολοκλήρωση της εγγραφής. Αυτή η προσέγγιση που βασίζεται στον συγγραφέα για τη συντήρηση αρχείων είναι γενικά βέλτιστη, επειδή η συμπίεση εκτελείται μόνο όταν προσδιορίζεται μέσω προγραμματισμού ότι είναι ωφέλιμη. Για λεπτομερείς επιλογές διαμόρφωσης και πρόσθετες πληροφορίες, ανατρέξτε στην τεκμηρίωση αυτόματης συμπίεσης .

Βελτιστοποιήστε την εγγραφή

Το Optimize write μειώνει την επιβάρυνση μικρών αρχείων εκτελώντας συμπίεση πριν από την εγγραφή (bin packing), η οποία δημιουργεί λιγότερα, μεγαλύτερα αρχεία. Αυτή η προσέγγιση ανακατεύει τα δεδομένα στη μνήμη σε κάδους βέλτιστου μεγέθους προτού το Spark γράψει τα αρχεία Parquet, μεγιστοποιώντας τη δυνατότητα δημιουργίας αρχείων κατάλληλου μεγέθους χωρίς να απαιτούνται άμεσες λειτουργίες εκκαθάρισης μετά την εγγραφή.

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

Στιγμιότυπο οθόνης που δείχνει πώς η βελτιστοποίηση εγγραφής έχει ως αποτέλεσμα την εγγραφή λιγότερων αρχείων.

Το Optimize write είναι συνήθως επωφελές για:

  • Διαμεισμένοι πίνακες
  • Πίνακες με συχνά μικρά ένθετα
  • Λειτουργίες που είναι πιθανό να αγγίξουν πολλά αρχεία (MERGE, UPDATE, και DELETE)

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

  1. Κατάργηση ρύθμισης βελτιστοποίησης εγγραφής

    spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")
    
  2. Ενεργοποίηση σε μεμονωμένο πίνακα

    ALTER TABLE dbo.table_name
    SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
    

Για να ενεργοποιήσετε τις εγγραφές σε όλους τους διαμερισμένους πίνακες στην περίοδο λειτουργίας Spark, βεβαιωθείτε ότι οι ρυθμίσεις της συνεδρίας δεν έχουν οριστεί και, στη συνέχεια, ενεργοποιήστε τις ρυθμίσεις spark.microsoft.delta.optimizeWrite.partitioned.enabledτης συνεδρίας:

SET spark.microsoft.delta.optimizeWrite.partitioned.enabled = TRUE

Το μέγεθος του αρχείου προορισμού που δημιουργείται από τη βελτιστοποίηση εγγραφής μπορεί να προσαρμοστεί μέσω της spark.databricks.delta.optimizeWrite.binSize διαμόρφωσης.

Σημείωμα

Δείτε τα προφίλ πόρων για τις προεπιλεγμένες ρυθμίσεις βελτιστοποίησης εγγραφής κατά προφίλ πόρων.

Συνεχής ρύθμιση του μεγέθους αρχείου προορισμού

Για να μην χρειάζεται να ορίσετε τη ρύθμιση παραμέτρων περιόδου λειτουργίας ελάχιστου και μέγιστου μεγέθους αρχείου προορισμού για βελτιστοποίηση, αυτόματη συμπίεση και βελτιστοποίηση εγγραφής, το Microsoft Fabric παρέχει την delta.targetFileSize ιδιότητα πίνακα ως μέσο ενοποίησης όλων των σχετικών ρυθμίσεων διαμόρφωσης διάταξης δεδομένων σε επίπεδο πίνακα. Η τιμή μεγέθους αρχείου προορισμού εισάγεται ως συμβολοσειρά byte (για παράδειγμα, 1073741824b, 1048576k, 1024m, 1g). Όταν καθοριστεί, έχει προτεραιότητα έναντι όλων των άλλων ρυθμίσεων συνεδρίας και προσαρμόσιμου μεγέθους αρχείου προορισμού.

ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.targetFileSize' = '256m')

Προσαρμόσιμο μέγεθος αρχείου προορισμού

Το Microsoft Fabric παρέχει προσαρμόσιμο μέγεθος αρχείου προορισμού για την εξάλειψη της πολυπλοκότητας που σχετίζεται με τη μη αυτόματη ρύθμιση του μεγέθους αρχείου προορισμού όλων των πινάκων σε μια περίοδο λειτουργίας ή μεμονωμένων πινάκων μέσω της delta.targetFileSize ιδιότητας πίνακα. Το προσαρμοστικό μέγεθος αρχείου στόχου χρησιμοποιεί ευρετικές μεθόδους πίνακα Delta, όπως το μέγεθος πίνακα, για να εκτιμήσει το ιδανικό μέγεθος αρχείου προορισμού και ενημερώνει αυτόματα τον στόχο καθώς αλλάζουν οι συνθήκες, διασφαλίζοντας βέλτιστη απόδοση χωρίς χειροκίνητη παρέμβαση ή γενικά έξοδα συντήρησης.

Σημείωμα

Αν και δεν είναι ενεργοποιημένο προς το παρόν από προεπιλογή, η Microsoft συνιστά την ενεργοποίηση της προσαρμοστικής διαμόρφωσης περιόδου λειτουργίας μεγέθους αρχείου προορισμού .

Ενεργοποιήστε το προσαρμόσιμο μέγεθος αρχείου προορισμού σε πίνακες που δημιουργούνται ή τροποποιούνται σε μια περίοδο λειτουργίας Spark, ορίζοντας την ακόλουθη ρύθμιση παραμέτρων περιόδου λειτουργίας Spark:

SET spark.microsoft.delta.targetFileSize.adaptive.enabled = TRUE

Όταν είναι ενεργοποιημένο, το προσαρμόσιμο μέγεθος αρχείου προορισμού αξιολογείται και ορίζεται στα ακόλουθα σενάρια:

  • CREATE TABLE AS SELECT και CREATE OR REPLACE TABLE AS SELECT λειτουργίες
  • Αντικατάσταση εγγραφών (για παράδειγμα, DataFrame.write.mode("overwrite") ή INSERT OVERWRITE)
  • Γράφει σε ErrorIfExistsκατάσταση , Appendή Ignore κατά τη δημιουργία ενός νέου πίνακα
  • Στην αρχή της OPTIMIZE εντολής

Μόλις οριστεί, το ιδανικό μέγεθος συνεχίζει να επαναξιολογείται στην αρχή κάθε OPTIMIZE λειτουργίας για να διασφαλιστεί ότι οι τρέχουσες ευρετικές μέθοδοι αντικατοπτρίζουν την πιο πρόσφατη κατανομή δεδομένων και την ανάπτυξη του πίνακα. Αυτή η προσαρμοστική προσέγγιση ενημερώνει αυτόματα το μέγεθος του αρχείου-στόχου με την πάροδο του χρόνου, καταργώντας την ανάγκη για μη αυτόματο συντονισμό, διατηρώντας παράλληλα την απόδοση ερωτημάτων και εγγραφής καθώς αυξάνονται τα δεδομένα σας. Όταν χρειάζεται να κλειδώσετε ένα συγκεκριμένο μέγεθος, όπως σε περιπτώσεις χρήσης υπερ-συντονισμού ή δοκιμής, μπορείτε να παρακάμψετε την προσαρμόσιμη ρύθμιση ορίζοντας ρητά την ιδιότητα πίνακα που ορίζεται delta.targetFileSize από το χρήστη.

Η αξιολογημένη προσαρμόσιμη τιμή μεγέθους αρχείου προορισμού μπορεί να ελεγχθεί εκτελώντας DESCRIBE DETAIL ή DESCRIBE EXTENDED στον πίνακα. Το προσαρμοστικό αξιολογημένο μέγεθος αποθηκεύεται ως συμβολοσειρά byte στην ιδιότητα delta.targetFileSize.adaptiveπίνακα. Αυτή η τιμή χρησιμοποιείται ως διαμόρφωση μέγιστου ή στοχευόμενου μεγέθους για βελτιστοποίηση, αυτόματη συμπύκνωση και βελτιστοποίηση εγγραφής. Η ελάχιστη τιμή που χρησιμοποιείται από σχετικές διαμορφώσεις υπολογίζεται ως το μισό του delta.targetFileSize.adaptive.

Το προσαρμόσιμο μέγεθος αρχείου προορισμού μπορεί να ρυθμιστεί περαιτέρω μέσω των ακόλουθων διαμορφώσεων περιόδου λειτουργίας Spark:

Ιδιότητα Περιγραφή Προεπιλεγμένη τιμή Ρυθμίσεις συνεδρίας
minFileSize Καθορίζει το ελάχιστο μέγεθος αρχείου (κάτω όριο) ως συμβολοσειρά byte που χρησιμοποιεί το Προσαρμόσιμο μέγεθος αρχείου προορισμού κατά την αξιολόγηση. Πρέπει να είναι μεταξύ 128 MB και 1 GB. 128λ spark.microsoft.delta.targetFileSize.adaptive.minFileSize
maxFileSize Καθορίζει το μέγιστο μέγεθος αρχείου (άνω όριο) ως συμβολοσειρά byte που χρησιμοποιεί το Προσαρμόσιμο μέγεθος αρχείου προορισμού κατά την αξιολόγηση. Πρέπει να είναι μεταξύ 128 MB και 1 GB. 1024μ spark.microsoft.delta.targetFileSize.adaptive.maxFileSize
stopAtMaxSize Όταν trueτο , σταματά περαιτέρω αξιολογήσεις μεγέθους μόλις το υπολογισμένο μέγεθος αρχείου προορισμού φτάσει στο maxFileSize, μειώνοντας τυχόν επιβάρυνση αξιολόγησης σε πολύ μεγάλους πίνακες. πιστός spark.microsoft.delta.targetFileSize.adaptive.stopAtMaxSize

Σημείωμα

Με stopAtMaxSize ενεργοποιημένο (το προεπιλεγμένο), το προσαρμοστικό μέγεθος στόχου παραμένει σταθερό στη μέγιστη τιμή μόλις επιτευχθεί, αποφεύγοντας επιπλέον υπολογισμούς. Εάν οι πίνακές σας ενδέχεται να συρρικνωθούν μετά την ανάπτυξη, ορίστε αυτήν την ιδιότητα σε false για να επιτρέψετε τον επανυπολογισμό κάτω από το μέγιστο όριο.

Το παρακάτω γράφημα απεικονίζει τη σχέση μεταξύ του μεγέθους του πίνακα και του βέλτιστου μεγέθους αρχείου παρκέ. Για πίνακες κάτω των 10 GB, το Fabric Spark Runtime εκτιμά ότι το μέγεθος του αρχείου προορισμού είναι 128 MB. Καθώς το μέγεθος του πίνακα μεγαλώνει, το μέγεθος του αρχείου προορισμού κλιμακώνεται γραμμικά, φτάνοντας έως και το 1 GB για πίνακες που υπερβαίνουν τα 10 TB.

Γράφημα που απεικονίζει τη σχέση μεταξύ του μεγέθους του πίνακα και του βέλτιστου μεγέθους αρχείου παρκέ.

Ξεκινώντας από μικρά 128 MB και στη συνέχεια κλιμακώνοντας το μέγεθος των αρχείων parquet καθώς ένας πίνακας μεγαλώνει σε μέγεθος έχει κλιμακωτά οφέλη:

  • Βελτιωμένη παράβλεψη αρχείων Delta: Τα αρχεία κατάλληλου μεγέθους υποστηρίζουν τη βέλτιστη ομαδοποίηση και παράβλεψη δεδομένων, επιτρέποντας στο πρωτόκολλο παράβλεψης αρχείων της Delta να εξαλείφει περισσότερα άσχετα αρχεία κατά την εκτέλεση του ερωτήματος. Ένας μικρός πίνακας με αρχεία 128 MB αντί για αρχεία 1 GB επιτρέπει 8 φορές περισσότερες πιθανές παραλείψεις αρχείων.

  • Μειωμένο κόστος ενημέρωσης: MERGE και UPDATE οι λειτουργίες ξαναγράφουν μόνο τα επηρεαζόμενα αρχεία. Τα αρχεία σωστού μεγέθους ελαχιστοποιούν τον αριθμό των αρχείων που αγγίζονται ανά λειτουργία, μειώνοντας τον όγκο των δεδομένων που ξαναγράφονται. Με ενεργοποιημένα τα διανύσματα διαγραφής, το σωστό μέγεθος του αρχείου γίνεται κρίσιμο: οι επιτύμβιες στήλες σε επίπεδο σειράς σε μεγάλα αρχεία έχουν ως αποτέλεσμα σημαντικό κόστος καθαρισμού κατά τη διάρκεια εργασιών συμπίεσης ή εκκαθάρισης.

  • Βελτιστοποιημένος παραλληλισμός: Τα αρχεία σωστού μεγέθους επιτρέπουν στο Spark να επιτύχει ιδανικό παραλληλισμό εργασιών. Πάρα πολλά μικρά αρχεία κατακλύζουν τον προγραμματιστή. πολύ λίγα μεγάλα αρχεία υποχρησιμοποιούν το Spark pool σας. Το βέλτιστο μέγεθος μεγιστοποιεί την απόδοση ανάγνωσης και εγγραφής.

Το προσαρμόσιμο μέγεθος αρχείου προορισμού μπορεί να βελτιώσει την απόδοση συμπίεσης κατά 30–60% και να παρέχει ταχύτερα ερωτήματα και εγγραφές όταν επιλέγει ένα βέλτιστο μέγεθος αρχείου από το προεπιλεγμένο. Εάν η προσαρμόσιμη αξιολόγηση αποδίδει το ίδιο μέγεθος με την προεπιλεγμένη ρύθμιση παραμέτρων περιόδου λειτουργίας Spark, δεν υπάρχει αναμενόμενη βελτίωση των επιδόσεων.

Σημαντικό

Για να αποφύγετε την ενίσχυση εγγραφής—όπου τα ήδη συμπιεσμένα αρχεία ξαναγράφονται όταν το προσαρμόσιμο μέγεθος του αρχείου προορισμού αυξάνεται καθώς μεγαλώνει ο πίνακάς σας—ενεργοποιήστε τους προορισμούς συμπίεσης σε επίπεδο αρχείου. Αυτή η δυνατότητα αποτρέπει την άσκοπη εκ νέου συμπίεση αρχείων που έχουν συμπιεστεί κάτω από προηγούμενα προσαρμοστικά μεγέθη στόχου. Για περισσότερες πληροφορίες, ανατρέξτε στην τεκμηρίωση σχετικά με τους στόχους συμπίεσης σε επίπεδο αρχείου.

Σύνοψη βέλτιστων πρακτικών

  • Ενεργοποιήστε την αυτόματη συμπύκνωση για διοχετεύσεις πρόσληψης με συχνές μικρές εγγραφές (ροής ή μικρο-παρτίδας) για να αποφύγετε τον μη αυτόματο προγραμματισμό και να διατηρήσετε τα αρχεία συμπιεσμένα αυτόματα.
    • Για άλλα μοτίβα εγγραφής, μπορεί να είναι ωφέλιμο να το ενεργοποιήσετε ως ασφάλεια έναντι της συσσώρευσης μικρών αρχείων, αλλά σταθμίστε εάν οι στόχοι σας σε επίπεδο υπηρεσίας επεξεργασίας δεδομένων ανέχονται περιοδικές αιχμές στο χρόνο επεξεργασίας.
  • Ενεργοποιήστε το προσαρμόσιμο μέγεθος αρχείου προορισμού για να αφαιρέσετε τις εικασίες σχετικά με τα βέλτιστα μεγέθη αρχείων προορισμού.
  • Χρησιμοποιήστε τη Βελτιστοποίηση εγγραφής σε ελεγχόμενες διαδρομές πρόσληψης (εργασίες δέσμης που μπορούν να ανεχθούν τυχαία σειρά, σενάρια διαμερισμάτων ή συχνές μικρές εγγραφές) για να μειώσετε τη δημιουργία μικρών αρχείων και το κόστος συντήρησης κατάντη. Η συμπίεση πριν από την εγγραφή (βελτιστοποίηση εγγραφής) τείνει να είναι λιγότερο δαπανηρή από τη συμπίεση μετά την εγγραφή (βελτιστοποίηση).
  • Προγραμματίστε λειτουργίες πλήρους πίνακα OPTIMIZE κατά τη διάρκεια ήσυχων παραθύρων όταν πρέπει να ξαναγράψετε πολλές κατατμήσεις ή να εκτελέσετε το Z-Order.
  • Ενεργοποιήστε τη γρήγορη βελτιστοποίηση για να ελαχιστοποιήσετε την ενίσχυση εγγραφής και να κάνετε OPTIMIZE πιο ανίκανη (βλ. γρήγορη βελτιστοποίηση).
  • Χρησιμοποιήστε delta.targetFileSize ή κατά προτίμηση προσαρμόσιμο μέγεθος αρχείου προορισμού για να διατηρήσετε τις τιμές μεγέθους αρχείου προορισμού συνεπείς σε όλες τις δυνατότητες διάταξης δεδομένων και τις περιόδους λειτουργίας Spark.
  • Ενεργοποιήστε τους στόχους συμπίεσης σε επίπεδο αρχείου για να αποτρέψετε την ενίσχυση εγγραφής καθώς οι πίνακες μεγαλώνουν σε μέγεθος και χρησιμοποιήστε μεγαλύτερα μεγέθη αρχείων-στόχων.