Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Format tabeli Lakehouse i Delta Lake są kluczowe dla Microsoft Fabric. Utrzymanie zoptymalizowanych tabel delty jest kluczem do wydajności i efektywności kosztowej prac analitycznych.
Ten artykuł pomaga zdecydować, kiedy użyć V-order oraz pokazuje główne wzorce konfiguracji i konserwacji stołów Delta.
Skorzystaj z tego artykułu, aby:
- Zrozum, co zmienia V-order i kiedy to pomaga.
- Zrozum, jak Z-Order i V-Order się uzupełniają.
- Wybierz odpowiedni poziom kontroli: sesja, właściwość tabeli lub operacja zapisu.
- Zastosuj wzorce konserwacji tabeli delty w odpowiednim kontekście środowiska uruchomieniowego platformy Spark.
Wskazówki dotyczące stosowania V-order w zależności od scenariuszy zużycia znajdziesz w artykule Cross-workload table maintenance and optimization.
Czym jest V-order?
V-order to optymalizacja czasu zapisu dla plików Parquet, która może poprawić wydajność zapytań w dalszej części w silnikach Fabric.
Na pierwszy rzut oka:
- Gdzie pomaga najbardziej: Wzorce z dużą liczbą operacji odczytu, takie jak pulpit nawigacyjny, interaktywna analiza i powtarzające się skanowania.
- Jak to pomaga: Reorganizuje układ Parquet (na przykład rozkład grup wierszy, kodowanie i kompresję), aby zwiększyć wydajność odczytu.
- Typowy kompromis: Operacje zapisu mogą trwać dłużej (często około 15% średnio), podczas gdy odczyty mogą znacznie poprawić się w zależności od obciążenia.
- Zgodność silnika: Pliki pozostają zgodne ze standardem open-source Parquet, a funkcje Delta, takie jak Z-Order, pozostają zgodne.
- Zakres: V-order jest na poziomie plików. Operacje delta, takie jak kompaktowanie, VACUUM i cofanie w czasie, mogą być używane z nim.
Zapisy w kolejności V sterowania
V-order służy do optymalizacji układu plików Parquet dla szybszej wydajności zapytań, zwłaszcza w scenariuszach wymagających dużej liczby odczytów. W Fabric V-order jest domyślnie wyłączony dla wszystkich nowo utworzonych przestrzeni roboczych, aby zoptymalizować wydajność dla obciążeń inżynierii danych wymagających intensywnego zapisu.
Zachowanie w kolejności V w Apache Spark jest kontrolowane za pomocą następujących konfiguracji:
| Konfigurowanie | Wartość domyślna | opis |
|---|---|---|
spark.sql.parquet.vorder.default |
false |
Steruje zapisem V-order na poziomie sesji. Ustawiono na false domyślnie w nowych obszarach roboczych usługi Fabric. |
TBLPROPERTIES("delta.parquet.vorder.enabled") |
Nieustawiony | Steruje domyślnym zachowaniem V-orderu na poziomie tabeli. |
Opcja zapisywania ramki danych: parquet.vorder.enabled |
Nieustawiony | Używany do sterowania kolejnością V na poziomie operacji zapisu. |
Użyj poniższych poleceń, aby włączyć lub nadpisać zapisy w kolejności V w zależności od potrzeb dla swojego scenariusza.
V-order jest domyślnie wyłączony w nowych przestrzeniach roboczych Fabric (spark.sql.parquet.vorder.default=false), aby poprawić wydajność zapisu dla potoków pobierania i transformacji.
Dla obciążeń wymagających intensywnego odczytu, takich jak interaktywne zapytania czy dashboardy, włącz V-order, ustawiając spark.sql.parquet.vorder.default na .true Możesz też przełączać się na readHeavyforSparkReadHeavy profile zasobów, które automatycznie włączają V-order dla wydajności skoncentrowanej na odczytie.
W środowisku uruchomieniowym Fabric w wersji 1.3 lub nowszej ustawienie spark.sql.parquet.vorder.enable zostało usunięte. Ponieważ V-order można zastosować automatycznie podczas optymalizacji Delty z OPTIMIZE, nie potrzebujesz tego starszego ustawienia. Jeśli migrujesz z wcześniejszych wersji środowiska uruchomieniowego, usuń to ustawienie z kodu.
Sprawdź konfigurację V-order w sesji Apache Spark
Użyj tych poleceń, aby potwierdzić bieżącą wartość sesji przed jej zmianą.
%%sql
SET spark.sql.parquet.vorder.default
Wyłącz zapis w kolejności V w sesji Apache Spark
Użyj tych poleceń, gdy obciążenie zapisem jest duże i chcesz szybciej wprowadzać lub przekształcać dane.
%%sql
SET spark.sql.parquet.vorder.default=FALSE
Włączenie zapisu w kolejności V w sesji Apache Spark
Gdy włączasz V-order na poziomie sesji, wszystkie zapisy Parquet w tej sesji używają V-order, w tym tabele Parquet nie-Delta i Delta, nawet jeśli parquet.vorder.enabled jest to wyraźnie ustawione na false.
%%sql
SET spark.sql.parquet.vorder.default=TRUE
Steruj kolejnością V za pomocą właściwości tabeli Delta
W tej sekcji jest używana tylko usługa Spark SQL, ponieważ właściwości tabeli są definiowane za pomocą języka SQL DDL i ALTER TABLE instrukcji.
Użyj właściwości tabeli, jeśli chcesz ustawić wartość domyślną na poziomie tabeli, która ma zastosowanie między sesjami.
Włącz właściwość tabeli V-order podczas tworzenia tabeli:
%%sql
CREATE TABLE person (id INT, name STRING, age INT) USING parquet TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");
Gdy właściwość tabeli jest ustawiona na true, INSERT, UPDATE, i stosujemy MERGE kolejność V w czasie zapisu. Ustawienia na poziomie sesji i zapisu nadal mają pierwszeństwo, więc zapisy mogą nadal używać V-order nawet wtedy, gdy TBLPROPERTIES jest ustawiony na false.
Włącz lub wyłącz V-order poprzez zmianę właściwości tabeli:
%%sql
ALTER TABLE person SET TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");
ALTER TABLE person SET TBLPROPERTIES("delta.parquet.vorder.enabled" = "false");
ALTER TABLE person UNSET TBLPROPERTIES("delta.parquet.vorder.enabled");
Po włączeniu lub wyłączeniu V-order za pomocą właściwości tabeli, wpływa tylko przyszłe zapisy do tabeli. Pliki Parquet zachowują kolejność używaną podczas tworzenia. Aby zmienić obecną strukturę fizyczną i zastosować lub usunąć urząd V, przeczytaj Table compaction.
Bezpośrednie sterowanie w kolejności V podczas operacji zapisu
W tej sekcji użyto narzędzia PySpark do zademonstrowania interfejsu API zapisywania DataFrame. Ten sam wzorzec jest dostępny w interfejsach API ramki danych Scala z równoważnymi opcjami.
Użyj opcji na poziomie zapisu, jeśli potrzebujesz kontroli nad poszczególnymi operacjami zamiast ustawień domyślnych dla całej sesji lub tabeli.
Wszystkie polecenia zapisu w Apache Spark używają ustawień sesji, jeśli nie są one explicite nadpisane. Poniższe przykłady zapisują się w kolejności V, dziedzicząc konfigurację sesji.
df_source.write\
.format("delta")\
.mode("append")\
.saveAsTable("myschema.mytable")
DeltaTable.createOrReplace(spark)\
.addColumn("id","INT")\
.addColumn("firstName","STRING")\
.addColumn("middleName","STRING")\
.addColumn("lastName","STRING",comment="surname")\
.addColumn("birthDate","TIMESTAMP")\
.location("Files/people")\
.execute()
df_source.write\
.format("delta")\
.mode("overwrite")\
.option("replaceWhere","start_date >= '2025-01-01' AND end_date <= '2025-01-31'")\
.saveAsTable("myschema.mytable")
V-order dotyczy tylko plików objętych daną predykatem.
W sesji, gdzie spark.sql.parquet.vorder.default jest nieustawiona lub ustawiona na , falsenastępujące polecenia zapisują się z użyciem kolejności V:
df_source.write\
.format("delta")\
.mode("overwrite")\
.option("replaceWhere","start_date >= '2025-01-01' AND end_date <= '2025-01-31'")\
.option("parquet.vorder.enabled","true")\
.saveAsTable("myschema.mytable")
DeltaTable.createOrReplace(spark)\
.addColumn("id","INT")\
.addColumn("firstName","STRING")\
.addColumn("middleName","STRING")\
.addColumn("lastName","STRING",comment="surname")\
.addColumn("birthDate","TIMESTAMP")\
.option("parquet.vorder.enabled","true")\
.location("Files/people")\
.execute()