Wektory usuwania w usłudze Databricks

Wektory usuwania przyspieszają operacje DELETE, UPDATE i MERGE w tabelach Delta Lake i Apache Iceberg. Bez wektorów usuwania modyfikowanie jednego wiersza wymaga ponownego zapisania całego pliku Parquet zawierającego ten rekord. Wektory usuwania zamiast tego oznaczają wiersze jako zmodyfikowane w metadanych, a operacje odczytu uwzględniają wpisy wektora usuwania podczas wykonywania zapytania, aby określić aktualny stan tabeli.

Note

W przypadku predykcyjnych aktualizacji We/Wy Photon używa wektorów usuwania do przyspieszania operacji DELETE, MERGE i UPDATE. Zobacz Przyspieszanie aktualizacji przy użyciu predykcyjnego we/wy.

Prerequisites

Wszystkie tabele Apache Iceberg v3 domyślnie zawierają wektory usuwania. Zobacz Korzystanie z funkcji Apache Iceberg v3. W przypadku tabel usługi Delta Lake należy jawnie włączyć wektory usuwania.

Aby zapisać tabele z wektorami usuwania przy użyciu wszystkich optymalizacji, użyj środowiska Databricks Runtime 14.3 LTS lub nowszego. Aby je odczytać, użyj środowiska Databricks Runtime 12.2 LTS lub nowszego.

W środowisku Databricks Runtime 14.2 lub nowszym, tabele zawierające wektory usuwania obsługują równoczesny dostęp na poziomie wiersza. Zobacz Współbieżność na poziomie wiersza.

Zgodność klienta

Usługa Azure Databricks używa wektorów usuwania do wspomagania predykcyjnych operacji we/wy w celu aktualizacji zasobów obliczeniowych z technologią Photon. Zobacz Przyspieszanie aktualizacji przy użyciu predykcyjnego we/wy.

Obsługa używania wektorów usuwania dla operacji odczytu i zapisu różni się w zależności od klienta.

W poniższej tabeli wymieniono wersje klientów wymagane do odczytu i zapisu tabel wektorów usuwania:

Client Zapis wektorów usuwania Odczytywanie wektorów usuwania
Środowisko uruchomieniowe usługi Databricks z aplikacją Photon Obsługuje MERGE, UPDATE i DELETE przy użyciu środowiska Databricks Runtime 12.2 LTS i jego nowszych wersji. Wymaga środowiska Databricks Runtime 12.2 LTS lub nowszego.
Środowisko uruchomieniowe usługi Databricks bez usługi Photon Obsługuje DELETE korzystanie z środowiska Databricks Runtime 12.2 LTS lub nowszego. Obsługuje UPDATE korzystanie ze środowiska Databricks Runtime w wersji 14.1 lub nowszej. Obsługuje MERGE korzystanie ze środowiska Databricks Runtime 14.3 LTS lub nowszego. Wymaga środowiska Databricks Runtime 12.2 LTS lub nowszego.
OSS Apache Spark z OSS Delta Lake Obsługuje DELETE przy użyciu OSS Delta 2.4.0 i nowszych wersji. Obsługuje UPDATE z wykorzystaniem OSS Delta w wersji 3.0.0 i nowszych. Wymaga OSS Delta w wersji 2.3.0 lub nowszej.
Adresaci udostępniania OpenSharing Operacje zapisu nie są obsługiwane na tabelach OpenSharing. Azure Databricks wymaga środowiska Databricks Runtime 14.1 lub nowszego. Platforma Apache Spark typu open source wymaga delta-sharing-spark wersji 3.1 lub nowszej.

Aby uzyskać pomoc techniczną dotyczącą innych klientów, zobacz dokumentację integracji OSS Delta Lake.

Włącz wektory usuwania

W ustawieniach obszaru roboczego można włączyć wektory usuwania w nowych tabelach podczas korzystania z usługi SQL Warehouse lub Databricks Runtime 14.3 LTS lub nowszej. Ustawienia domyślne różnią się w zależności od regionu, zobacz Automatyczne włączanie wektorów usuwania.

Wektory usuwania nie są domyślnie włączone dla zmaterializowanych widoków i tabel przesyłania strumieniowego przechowywanych w magazynie metadanych Hive.

Aby ręcznie włączyć lub usunąć wektory usuwania w dowolnej tabeli lub widoku, użyj enableDeletionVectors właściwości tabeli.

Aby włączyć wektory usuwania w tabeli podczas tworzenia lub zmieniania tabeli:

Jezioro Delta

CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Tabela Iceberg

CREATE TABLE <table-name> [options] TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);

Nie można użyć instrukcji ALTER, aby włączyć lub wyłączyć wektory usuwania w widoku zmaterializowanym lub tabeli strumieniowej. Należy użyć instrukcji CREATE TABLE.

Warning

Po włączeniu wektorów usuwania usługa Databricks uaktualnia protokół tabeli. Po uaktualnieniu klienci bez obsługi wektorów usuwania nie mogą odczytać tabeli. Zobacz kompatybilność funkcji i protokoły Delta Lake.

W środowisku Databricks Runtime 14.1 lub nowszym można usunąć funkcję tabeli wektorów usuwania, aby umożliwić zgodność z innymi klientami. Zobacz Upuszczanie funkcji tabeli Delta Lake i obniżanie poziomu protokołu tabeli.

Zastosuj usuwanie nietrwałe do plików danych

Wektory usuwania oznaczają zmiany w wierszach jako miękkie usunięcia, które logicznie modyfikują istniejące w tabeli pliki danych Parquet. Aby fizycznie ponownie zapisać pliki danych Parquet, wykonaj jedną z następujących czynności:

  • Uruchom OPTIMIZE na stole.
  • Uruchom REORG TABLE ... APPLY (PURGE) na stole. To polecenie ponownie zapisuje wszystkie pliki danych zawierające rekordy ze zmianami wektora usuwania. Zobacz: REORG TABLE.
  • Uruchom zapis z automatycznym kompaktowaniem, co powoduje ponowny zapis pliku danych z wektorem usunięć.

Zdarzenia kompaktowania plików nie mają ścisłych gwarancji dotyczących rozwiązywania zmian zarejestrowanych w wektorach usuwania. Niektóre zmiany zarejestrowane w wektorach usuwania mogą nie być stosowane fizycznie, jeśli docelowe pliki danych nie są kandydatami do kompaktowania plików.

Fizyczne usuwanie starych danych

Zmodyfikowane dane mogą nadal istnieć w starych plikach danych tabeli po operacji przeczyszczania. Możesz na przykład fizycznie usunąć dane, aby zmniejszyć koszty magazynowania u dostawcy usług w chmurze lub zapewnić zgodność z żądaniami RODO.

Aby fizycznie usunąć stare dane:

  1. Uruchom REORG TABLE ... APPLY (PURGE)
  2. Uruchom polecenie VACUUM z wartością progową przechowywania ustawioną na znacznik czasu ukończenia przeczyszczania, aby fizycznie usunąć pliki z poprzednich wersji tabeli. Zobacz Purge: usunięcia dotyczące tylko metadanych w celu wymuszenia ponownego zapisu danych.

Zwiększanie wydajności dużych tabel

Aby zwiększyć wydajność przeczyszczania dużych tabel, ustaw wartość spark.databricks.delta.reorg.purgeModerows.

Na przykład tę konfigurację należy ustawić podczas ręcznego przeczyszczania danych za pomocą REORG TABLE ... APPLY (PURGE) lub podczas usuwania wektorów za pomocą ALTER TABLE DROP FEATURE deletionVectors.

Domyślnie spark.databricks.delta.reorg.purgeMode jest ustawiona na wartość all. Na dużych tabelach ta operacja może być powolna, ponieważ operacje przeczyszczania muszą skanować wszystkie stopki plików Parquet, aby sprawdzić zarówno dane o upuszczonych kolumnach, jak i wiersze usunięte miękko.

Wartość rows ogranicza operację do przetwarzania tylko plików z nietrwale usuniętymi wierszami. W przypadku dużych tabel może to poprawić wydajność, jeśli wiele plików nie zawiera wierszy usuniętych nietrwale, a tabela nie ma porzuconych kolumn.

Limitations

  • Odczyty Iceberg v2 nie obsługują wektorów usuwania. Apache Iceberg v3 obsługuje wektory usuwania w tabelach z włączonym odczytem Iceberg. Zobacz Korzystanie z funkcji Apache Iceberg v3.
  • Nie można użyć instrukcji GENERATE do wygenerowania pliku manifestu dla tabeli zawierającej pliki korzystające z wektorów usuwania. Aby wygenerować manifest, najpierw uruchom REORG TABLE … instrukcję APPLY (PURGE), a następnie uruchom instrukcję GENERATE. Należy sprawdzić, czy w momencie przesyłania instrukcji REORG nie są wykonywane żadne współbieżne operacje zapisu.
    • Nie można przyrostowo wygenerować plików manifestu dla tabeli z włączonymi wektorami usuwania (na przykład przez ustawienie właściwości tabeli delta.compatibility.symlinkFormatManifest.enabled=true).
  • Jeśli włączysz wektory usuwania w zmaterializowanym widoku lub tabeli przesyłania strumieniowego, a następnie usuniesz te wektory, nie będą one miały zastosowania do przyszłych zapisów w widoku lub tabeli, ale istniejące wektory usuwania pozostaną.
  • Nie można obniżyć poziomu protokołu tabeli po włączeniu wektorów usuwania w zmaterializowanym widoku lub tabeli przesyłania strumieniowego, nawet jeśli później wyłączysz wektory usuwania.