Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Databricks obsługuje mapowanie kolumn dla tabel usługi Delta Lake, co umożliwia wprowadzanie zmian tylko metadanych w celu oznaczania kolumn jako usuniętych lub zmienionych bez ponownego zapisywania plików danych. Umożliwia również użytkownikom nadawanie nazw kolumnom tabeli delty przy użyciu znaków, które nie są dozwolone przez Parquet, takich jak spacje, dzięki czemu użytkownicy mogą bezpośrednio pozyskiwać dane CSV lub JSON do funkcji Delta bez konieczności zmieniania nazw kolumn z powodu poprzednich ograniczeń znaków.
Ważne
Tabele z włączonym mapowaniem kolumn można odczytywać tylko w środowisku Databricks Runtime 10.4 LTS lub nowszym.
Jeśli używasz starszego wzorca, który polega na nazwach katalogów do czytania tabel Delta, włączenie mapowania kolumn może zakłócić działanie starszych obciążeń. Tabele podzielone na partycje z włączonym mapowaniem kolumn używają losowych prefiksów zamiast nazw kolumn dla katalogów partycji. Zobacz Czy Delta Lake i Parquet dzielą strategie partycjonowania?
Włączenie mapowania kolumn w tabelach może spowodować przerwanie operacji podrzędnych korzystających z kanału danych zmian Delta. Zobacz Zmienianie ograniczeń źródła danych dla tabel z mapowaniem kolumn.
Włączenie mapowania kolumn w tabelach może spowodować przerwanie odczytu strumieniowego z tabeli Delta jako źródła, w tym w potokach deklaratywnych Spark Lakeflow. Zobacz Przesyłanie strumieniowe za pomocą mapowania kolumn i zmian schematu.
Włączanie mapowania kolumn
Użyj następującego polecenia, aby włączyć mapowanie kolumn:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name'
)
Mapowanie kolumn wymaga następujących protokołów Delta:
- Wersja czytnika 2 lub nowsza.
- Writer w wersji 5 lub wyższej.
Zobacz zgodność funkcji Delta Lake i protokoły.
Wyłącz mapowanie kolumn
W środowisku Databricks Runtime 15.3 lub nowszym możesz użyć polecenia DROP FEATURE, aby usunąć mapowanie kolumn z tabeli i obniżyć wersję protokołu tabeli.
Ważne
Porzucanie mapowania kolumn z tabeli nie powoduje usunięcia losowych prefiksów używanych w nazwach katalogów dla tabel partycjonowanych.
Zobacz Usuwanie funkcji tabeli Delta Lake i obniżenie protokołu tabeli.
Zmienianie nazwy kolumny
Uwaga
Dostępne w środowisku Databricks Runtime 10.4 LTS i nowszym.
Po włączeniu mapowania kolumn dla tabeli delty można zmienić nazwę kolumny:
ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name
Aby uzyskać więcej przykładów, zobacz Aktualizowanie schematu tabeli usługi Delta Lake.
Usuwanie kolumn
Uwaga
Dostępne w środowisku Databricks Runtime 11.3 LTS i nowszym.
Po włączeniu mapowania kolumn dla tabeli delty można usunąć jedną lub więcej kolumn:
ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)
Aby uzyskać więcej informacji, zobacz Aktualizowanie schematu tabeli usługi Delta Lake.
Obsługiwane znaki w nazwach kolumn
Gdy mapowanie kolumn jest włączone dla tabeli delty, można uwzględnić spacje i dowolne z tych znaków w nazwach kolumn tabeli: ,;{}()\n\t=.
Przesyłanie strumieniowe przy użyciu mapowania kolumn i zmian schematu
Możesz określić lokalizację śledzenia schematu, aby włączyć strumieniowe przesyłanie z tabel Delta z aktywnym mapowaniem kolumn. Rozwiązuje to problem, w którym zmiany w schemacie nieaddytywnym mogą prowadzić do uszkodzenia strumieni.
Każdy odczyt strumieniowy względem źródła danych musi mieć własną określoną wartość schemaTrackingLocation. Określony schemaTrackingLocation musi znajdować się w katalogu określonym dla tabeli docelowej checkpointLocation na potrzeby zapisu strumieniowego. W przypadku obciążeń przesyłania strumieniowego łączących dane z wielu źródłowych tabel Delta należy określić unikatowe katalogi w ramach checkpointLocation dla każdej tabeli źródłowej.
Ważne
Aby włączyć mapowanie kolumn w aktualnie uruchomionym zadaniu, należy zatrzymać i ponownie uruchomić zadanie co najmniej dwa razy (czyli ponownie uruchomić dwa razy).
- Pierwsze ponowne uruchomienie inicjuje mapowanie kolumn.
- Drugie ponowne uruchomienie umożliwia wprowadzenie zmian schematu.
Wszelkie dalsze zmiany schematu (takie jak dodawanie lub usuwanie kolumn lub zmiana typu kolumny) będą również wymagać ponownego uruchomienia zadania.
Opcja schemaTrackingLocation służy do określania ścieżki śledzenia schematu, jak pokazano w poniższym przykładzie kodu:
checkpoint_path = "/path/to/checkpointLocation"
(spark.readStream
.option("schemaTrackingLocation", checkpoint_path)
.table("delta_source_table")
.writeStream
.option("checkpointLocation", checkpoint_path)
.toTable("output_table")
)