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.
Ważne
Usługa Databricks zaleca używanie klastrowania płynnego zamiast partycjonowania w celu uproszczenia zarządzania tabelami i optymalizacji wydajności zapytań. Zobacz Używaj płynnego grupowania dla tabel.
Unity Catalog automatycznie wykrywa partycje w tabelach zewnętrznych przez rekursywne wyliczanie katalogów. W przypadku dużych tabel partycjonowanych włączenie rejestrowania metadanych partycji zmniejsza opóźnienie odnajdywania i zwiększa spójność z magazynem metadanych Hive.
Usługa Databricks rekomenduje włączenie rejestrowania metadanych partycji, aby poprawić szybkość odczytu i wydajność zapytań dla zewnętrznych tabel Katalogu Unity z partycjami.
Domyślna strategia wykrywania partycji w Unity Catalog
Domyślnie Unity Catalog rekursywnie wyświetla wszystkie katalogi w lokalizacji tabeli, aby automatycznie odnajdywać partycje. W przypadku dużych tabel z wieloma katalogami partycji może to zwiększyć opóźnienie dla wielu operacji tabeli.
Korzystanie z rejestrowania metadanych partycji
W środowisku Databricks Runtime 13.3 LTS i nowszym można opcjonalnie włączyć rejestrowanie metadanych partycji, strategię odnajdywania partycji dla tabel zewnętrznych zarejestrowanych w Unity Catalog. To zachowanie jest zgodne ze strategią odnajdywania partycji używaną w magazynie metadanych Hive. To zachowanie ma wpływ tylko na zewnętrzne tabele Unity Catalog, które mają partycje i używają formatów Parquet, ORC, CSV, Avro lub JSON. Usługa Databricks zaleca włączenie nowego zachowania w celu zwiększenia szybkości odczytu i wydajności zapytań dla tych tabel.
Ważne
Tabele z włączonym rejestrowaniem metadanych partycji mają inne zachowanie podczas odnajdywania partycji. Zamiast automatycznie skanować lokalizację tabeli pod kątem partycji, Unity Catalog uwzględnia tylko te partycje, które są zarejestrowane w metadanych partycji. Zobacz Ręczne dodawanie, usuwanie lub naprawianie metadanych partycji.
Tabele z włączoną tą funkcją można odczytywać lub zapisywać tylko przy użyciu środowiska Databricks Runtime 13.3 LTS lub nowszego.
Włączanie rejestrowania metadanych partycji
Aby włączyć rejestrowanie metadanych partycji w tabeli, ustaw właściwość tabeli podczas tworzenia tabeli zewnętrznej, jak pokazano w poniższym przykładzie:
CREATE OR REPLACE TABLE <catalog>.<schema>.<table-name>
USING <format>
PARTITIONED BY (<partition-column-list>)
TBLPROPERTIES ('partitionMetadataEnabled' = 'true')
LOCATION 'abfss://<bucket-path>/<table-directory>';
Po utworzeniu tabeli z włączonym rejestrowaniem metadanych partycji usługa Azure Databricks używa metadanych partycji do odczytania tabeli we wszystkich kolejnych obciążeniach.
Możesz również użyć konfiguracji Sparka, aby włączyć metadane partycji dla bieżącego SparkSession. Po włączeniu w SparkSession, każda zewnętrzna tabela zostanie utworzona z włączoną właściwością tabeli metadanych partycji. Konfiguracja platformy Spark jest domyślnie wyłączona.
Poniższa składnia demonstruje używanie języka SQL do ustawiania konfiguracji platformy Spark w notesie. Konfiguracje platformy Spark można również ustawić podczas konfigurowania obliczeń.
SET spark.databricks.nonDelta.partitionLog.enabled = true;
Konfigurację platformy Spark można zastąpić, jawnie włączając lub wyłączając właściwość tabeli podczas tworzenia tabeli.
Ważne
Możliwe jest odczytywanie i zapisywanie tabel wyłącznie przy włączonym rejestrowaniu metadanych partycji w środowisku Databricks Runtime 13.3 LTS lub nowszym. Aby odczytać te tabele przy użyciu środowiska Databricks Runtime 12.2 LTS, należy usunąć i ponownie utworzyć tabelę z wyłączoną właściwością tabeli metadanych partycji.
Tabele zewnętrzne nie usuwają bazowych plików danych podczas ich usuwania. Usługa Databricks zaleca używanie CREATE OR REPLACE składni do uaktualniania tabel w celu korzystania z rejestrowania metadanych partycji, jak w poniższym przykładzie:
CREATE OR REPLACE TABLE <catalog>.<schema>.<table-name>
USING <format>
PARTITIONED BY (<partition-column-list>)
LOCATION 'abfss://<bucket-path>/<table-directory>';
Możesz sprawdzić, czy tabela została utworzona przy użyciu metadanych partycji, wykonując następujące czynności:
- Sprawdź sekcję właściwości tabeli zwróconą przez
DESCRIBE EXTENDED table_name. - Sprawdź metadane tabeli za pomocą Eksploratora wykazu.
Właściwość tabeli zawiera partitionMetadataEnabled=true.
Katalog Unity egzekwuje reguły dotyczące nakładających się ścieżek dla tabel i woluminów. Nie można zarejestrować nowej tabeli w katalogu Unity w zestawie plików danych, jeżeli tabela już istnieje w tej lokalizacji.
Praca z tabelami z metadanymi partycji
Databricks zaleca używanie nazw tabel przy wszystkich odczytach i zapisach we wszystkich tabelach zarejestrowanych w Unity Catalog. W przypadku tabel z metadanymi partycji zapewnia, że nowe partycje dodane do tabeli są rejestrowane w Unity Catalog i że zapytania do tabeli odczytują wszystkie zarejestrowane partycje.
Użycie wzorców opartych na ścieżkach dla odczytów lub zapisów może spowodować ignorowanie partycji lub ich niezarejestrowanie w magazynie metadanych Unity Catalog. Zobacz Ograniczenia.
Wyświetl partycje
** Użyj następującego polecenia, aby wyświetlić wszystkie partycje zarejestrowane w Unity Catalog jako metadane partycji.
SHOW PARTITIONS <table-name>
Aby sprawdzić, czy pojedyncza partycja jest zarejestrowana w katalogu Unity, użyj następującego polecenia:
SHOW PARTITIONS <table-name>
PARTITION (<partition-column-name> = <partition-column-value>)
Ręczne dodawanie, usuwanie lub naprawianie metadanych partycji
Unity Catalog wymaga, aby wszystkie partycje dla tabel zewnętrznych znajdowały się w katalogu zarejestrowanym przy użyciu klauzuli LOCATION podczas rejestracji tabeli.
Po włączeniu metadanych partycji automatyczne odnajdywanie partycji w lokalizacji tabeli jest wyłączone. Jeśli systemy zewnętrzne zapisują dane w lokalizacji tabeli lub używasz zapisów opartych na ścieżkach do dodawania lub zastępowania rekordów w tabeli, należy ręcznie naprawić metadane partycji.
Usługa Azure Databricks używa partycjonowania w stylu hive do przechowywania tabel wspieranych przez format Parquet, ORC, CSV i JSON. Partycje w stylu Hive zawierają pary klucz-wartość połączone przez znak równości w katalogu partycji, na przykład year=2021/month=01/.
Jeśli tabela używa partycjonowania w stylu Hive, można użyć MSCK REPAIR do synchronizacji metadanych partycji w wykazie Unity Catalog z partycjami, które istnieją w lokalizacji tabeli. W poniższych przykładach składni przedstawiono typowe operacje:
-- Add and remove partition metadata to match directories in table location
MSCK REPAIR TABLE <table_name> SYNC PARTITIONS;
-- Add partitions in the table location that are not registered as partition metadata
MSCK REPAIR TABLE <table_name> ADD PARTITIONS;
-- Drop partitions registered as partition metadata that are not in the table location
MSCK REPAIR TABLE <table_name> DROP PARTITIONS;
Zobacz REPAIR TABLE.
Ręczne określanie ścieżek dla innych typów partycji
Jeśli tabela nie używa partycjonowania w stylu hive, należy ręcznie określić lokalizacje partycji podczas dodawania partycji. Ręczna specyfikacja partycji może również zmniejszyć opóźnienie w porównaniu ze składnią MSCK REPAIR, szczególnie w przypadku tabel z dużą liczbą partycji. Poniższy przykład składni pokazuje dodawanie partycji:
ALTER TABLE <table-name>
ADD PARTITION (<partition-column-name> = <partition-column-value>)
LOCATION 'abfss://<bucket-path>/<table-directory>/<partition-directory>';
Możesz także użyć składni ALTER TABLE do usuwania, zmieniania nazwy, odzyskiwania i ustawiania lokalizacji partycji. Zobacz ALTER TABLE ... PARTITION.
Ograniczenia
Istnieją następujące ograniczenia:
- Odczytywanie tabeli przy użyciu ścieżki katalogu zwraca wszystkie partycje, w tym wszystkie partycje, które zostały ręcznie dodane lub porzucone.
- W przypadku wstawiania lub zastępowania rekordów w tabeli przy użyciu ścieżki zamiast nazwy tabeli metadane partycji nie są rejestrowane.