Używanie Unity Catalog z potokami Delta Live Tables

Ważne

Obsługa tabel Delta Live Tables dla wykazu aparatu Unity jest dostępna w publicznej wersji zapoznawczej.

Oprócz istniejącej obsługi utrwalania tabel w magazynie metadanych Programu Hive można używać wykazu aparatu Unity z potokami delta Live Tables w celu:

  • Zdefiniuj wykaz w wykazie aparatu Unity, w którym potok będzie utrwalał tabele.
  • Odczytywanie danych z tabel wykazu aparatu Unity.

Obszar roboczy może zawierać potoki korzystające z wykazu aparatu Unity lub magazynu metadanych Hive. Jednak pojedynczy potok nie może zapisywać zarówno w magazynie metadanych Programu Hive, jak i katalogu aparatu Unity, a istniejące potoki nie mogą zostać uaktualnione do korzystania z wykazu aparatu Unity. Istniejące potoki, które nie korzystają z wykazu aparatu Unity, nie mają wpływu na tę wersję zapoznawcza i będą nadal utrwalać dane w magazynie metadanych Hive przy użyciu skonfigurowanej lokalizacji magazynu.

O ile nie określono inaczej w tym dokumencie, wszystkie istniejące źródła danych i funkcje delta live tables są obsługiwane z potokami korzystającymi z wykazu aparatu Unity. Interfejsy Języka Python i SQL są obsługiwane w przypadku potoków korzystających z wykazu aparatu Unity.

Tabele utworzone w potoku mogą być również odpytywane z udostępnionych klastrów wykazu aparatu Unity przy użyciu środowiska Databricks Runtime 13.3 LTS lub nowszego lub z usługi SQL Warehouse. Nie można wykonywać zapytań o tabele z przypisanych lub bez klastrów izolacji.

Aby zarządzać uprawnieniami w tabelach utworzonych przez potok wykazu aparatu Unity, użyj funkcji GRANT i REVOKE.

Wymagania

Następujące elementy są wymagane do utworzenia tabel w wykazie aparatu Unity z potoku delta live tables:

  • Musisz mieć USE CATALOG uprawnienia do wykazu docelowego.
  • Jeśli potok tworzy zmaterializowane widoki, musisz mieć CREATE MATERIALIZED VIEW uprawnienia i USE SCHEMA w schemacie docelowym.
  • Jeśli potok tworzy tabele przesyłania strumieniowego, musisz mieć CREATE TABLE uprawnienia i USE SCHEMA w schemacie docelowym.
  • Jeśli schemat docelowy nie jest określony w ustawieniach potoku, musisz mieć CREATE MATERIALIZED VIEWCREATE TABLE lub uprawnienia co najmniej jednego schematu w wykazie docelowym.

Ograniczenia

Poniżej przedstawiono ograniczenia dotyczące używania wykazu aparatu Unity z tabelami delta Live Tables:

  • Domyślnie tylko właściciel potoku i administratorzy obszaru roboczego mają uprawnienia do wyświetlania dzienników sterowników z klastra z uruchomionym potokiem obsługującym wykaz aparatu Unity. Aby umożliwić innym użytkownikom dostęp do wyświetlania dzienników sterowników, zobacz Zezwalanie użytkownikom niebędącym administratorem na wyświetlanie dzienników sterowników z potoku obsługującego wykaz aparatu Unity.

  • Istniejących potoków korzystających z magazynu metadanych Hive nie można uaktualnić do korzystania z wykazu aparatu Unity. Aby przeprowadzić migrację istniejącego potoku zapisującego do magazynu metadanych Hive, należy utworzyć nowy potok i ponownie pozyskać dane ze źródeł danych.

  • Nie można utworzyć potoku obsługującego wykaz aparatu Unity w obszarze roboczym dołączonym do magazynu metadanych utworzonego podczas publicznej wersji zapoznawczej wykazu aparatu Unity. Zobacz Uaktualnianie do dziedziczenia uprawnień.

  • Biblioteki innych firm i pliki JAR nie są obsługiwane.

  • Zapytania języka manipulowania danymi (DML), które modyfikują schemat tabeli przesyłania strumieniowego, nie są obsługiwane.

  • Zmaterializowany widok utworzony w potoku delta Live Tables nie może być używany jako źródło przesyłania strumieniowego poza tym potokiem, na przykład w innym potoku lub w notesie podrzędnym.

  • Publikowanie w schematach określających zarządzaną lokalizację magazynu jest obsługiwane tylko w kanale w wersji zapoznawczej.

  • Jeśli potok publikuje w schemacie z zarządzaną lokalizacją magazynu, schemat można zmienić w kolejnej aktualizacji, ale tylko wtedy, gdy zaktualizowany schemat używa tej samej lokalizacji magazynu co wcześniej określony schemat.

  • Jeśli schemat docelowy określa lokalizację przechowywania, wszystkie tabele są tam przechowywane. Jeśli nie określono lokalizacji przechowywania schematu, tabele są przechowywane w lokalizacji przechowywania katalogu, jeśli katalog docelowy określa jeden. Jeśli nie określono lokalizacji przechowywania schematu i katalogu, tabele są przechowywane w głównej lokalizacji magazynu metadanych, w którym są publikowane tabele.

  • Karta Historia w Eksploratorze wykazu nie pokazuje historii tabel przesyłania strumieniowego i zmaterializowanych widoków.

  • Właściwość nie jest obsługiwana LOCATION podczas definiowania tabeli.

  • Potoki obsługujące wykaz aparatu Unity nie mogą publikować w magazynie metadanych Hive.

  • Obsługa funkcji UDF języka Python jest dostępna w publicznej wersji zapoznawczej. Aby korzystać z funkcji zdefiniowanych przez użytkownika języka Python, potok musi używać kanału w wersji zapoznawczej.

  • Nie można używać funkcji udostępniania różnicowego z tabelami delta live zmaterializowanym widokiem lub tabelą przesyłania strumieniowego opublikowaną w wykazie aparatu Unity.

  • Nie można użyć event_logfunkcji z wartością tabeli w potoku lub zapytaniu, aby uzyskać dostęp do dzienników zdarzeń wielu potoków.

  • Nie można udostępnić widoku utworzonego nad funkcją event_log o wartości tabeli innym użytkownikom.

  • Klastry z jednym węzłem nie są obsługiwane w potokach z obsługą wykazu aparatu Unity. Ponieważ tabele delta live mogą utworzyć klaster z jednym węzłem do uruchamiania mniejszych potoków, potok może zakończyć się niepowodzeniem z komunikatem o błędzie odwołującym single-node modesię do . W takim przypadku upewnij się, że podczas konfigurowania ustawień obliczeniowych określono co najmniej jeden proces roboczy.

  • Tabele utworzone w potoku z obsługą wykazu aparatu Unity nie mogą być odpytywane z przypisanych lub bez klastrów izolacji. Aby wykonywać zapytania dotyczące tabel utworzonych przez potok delta Live Tables, należy użyć klastra trybu dostępu współdzielonego przy użyciu środowiska Databricks Runtime 13.3 LTS lub nowszego lub usługi SQL Warehouse.

  • Funkcja Delta Live Tables używa klastra trybu dostępu współdzielonego do uruchamiania potoku obsługującego wykaz aparatu Unity. Potok z obsługą wykazu aparatu Unity nie może być uruchamiany w przypisanym klastrze. Aby dowiedzieć się więcej o ograniczeniach trybu dostępu współdzielonego w wykazie aparatu Unity, zobacz Ograniczenia trybu dostępu współdzielonego w wykazie aparatu Unity.

  • Nie można używać filtrów wierszy ani masek kolumn z zmaterializowanymi widokami ani tabelami przesyłania strumieniowego opublikowanymi w wykazie aparatu Unity.

Uwaga

Pliki bazowe obsługujące zmaterializowane widoki mogą zawierać dane z tabel nadrzędnych (w tym możliwe dane osobowe), które nie są wyświetlane w zmaterializowanej definicji widoku. Te dane są automatycznie dodawane do bazowego magazynu w celu obsługi przyrostowego odświeżania zmaterializowanych widoków.

Ponieważ podstawowe pliki zmaterializowanego widoku mogą spowodować ujawnienie danych z tabel nadrzędnych, które nie są częścią zmaterializowanego schematu widoku, usługa Databricks zaleca, aby nie udostępniać bazowego magazynu niezaufanym użytkownikom podrzędnym.

Załóżmy na przykład, że definicja zmaterializowanego widoku zawiera klauzulę COUNT(DISTINCT field_a) . Mimo że zmaterializowana definicja widoku zawiera tylko klauzulę agregacji COUNT DISTINCT , pliki bazowe będą zawierać listę rzeczywistych field_awartości .

Zmiany istniejących funkcji

Po skonfigurowaniu funkcji Delta Live Tables do utrwalania danych w wykazie aparatu Unity cykl życia tabeli jest zarządzany przez potok Delta Live Tables. Ponieważ potok zarządza cyklem życia i uprawnieniami tabeli:

  • Gdy tabela zostanie usunięta z definicji potoku delta Live Tables, odpowiedni zmaterializowany widok lub wpis tabeli przesyłania strumieniowego zostanie usunięty z wykazu aparatu Unity w następnej aktualizacji potoku. Rzeczywiste dane są przechowywane przez pewien czas, aby można je było odzyskać, jeśli zostały usunięte przez pomyłkę. Dane można odzyskać, dodając zmaterializowany widok lub tabelę przesyłania strumieniowego z powrotem do definicji potoku.
  • Usunięcie potoku Delta Live Tables powoduje usunięcie wszystkich tabel zdefiniowanych w tym potoku. Ze względu na tę zmianę interfejs użytkownika tabel na żywo delty jest aktualizowany w celu wyświetlenia monitu o potwierdzenie usunięcia potoku.
  • Wewnętrzne tabele kopii zapasowych, w tym tabele pomocnicze używane do obsługi APPLY CHANGES INTOprogramu , nie są bezpośrednio dostępne dla użytkowników.

Zapisywanie tabel w wykazie aparatu Unity z potoku delta Live Tables

Uwaga

Jeśli nie wybierzesz wykazu i schematu docelowego dla potoku, tabele nie zostaną opublikowane w wykazie aparatu Unity i będą dostępne tylko przez zapytania w tym samym potoku.

Aby zapisać tabele w wykazie aparatu Unity, podczas tworzenia potoku wybierz pozycję Wykaz aparatu Unity w obszarze Opcje magazynu, wybierz katalog w menu rozwijanym Wykaz, a następnie wybierz istniejący schemat lub wprowadź nazwę nowego schematu w menu rozwijanym Schemat docelowy. Aby dowiedzieć się więcej o katalogach wykazu aparatu Unity, zobacz Wykazy. Aby dowiedzieć się więcej o schematach w wykazie aparatu Unity, zobacz Schematy.

Pozyskiwanie danych do potoku wykazu aparatu Unity

Potok skonfigurowany do używania wykazu aparatu Unity może odczytywać dane z:

  • Tabele zarządzane i zewnętrzne wykazu aparatu Unity, widoki, zmaterializowane widoki i tabele przesyłania strumieniowego.
  • Tabele i widoki magazynu metadanych Hive.
  • Automatyczne ładowanie przy użyciu cloud_files() funkcji do odczytu z lokalizacji zewnętrznych wykazu aparatu Unity.
  • Apache Kafka i Amazon Kinesis.

Poniżej przedstawiono przykłady odczytywania z tabel wykazu unity i magazynu metadanych Hive.

Pozyskiwanie wsadowe z tabeli wykazu aparatu Unity

SQL

CREATE OR REFRESH LIVE TABLE
  table_name
AS SELECT
  *
FROM
  my_catalog.my_schema.table1;

Python

@dlt.table
def table_name():
  return spark.table("my_catalog.my_schema.table")

Przesyłanie strumieniowe zmian z tabeli wykazu aparatu Unity

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  STREAM(my_catalog.my_schema.table1);

Python

@dlt.table
def table_name():
  return spark.readStream.table("my_catalog.my_schema.table")

Pozyskiwanie danych z magazynu metadanych Hive

Potok używający wykazu aparatu Unity może odczytywać dane z tabel magazynu metadanych Hive przy użyciu hive_metastore wykazu:

SQL

CREATE OR REFRESH LIVE TABLE
  table_name
AS SELECT
  *
FROM
  hive_metastore.some_schema.table;

Python

@dlt.table
def table3():
  return spark.table("hive_metastore.some_schema.table")

Pozyskiwanie danych z modułu ładującego automatycznego

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  cloud_files(
    <path-to-uc-external-location>,
    "json"
  )

Python

@dlt.table(table_properties={"quality": "bronze"})
def table_name():
  return (
     spark.readStream.format("cloudFiles")
     .option("cloudFiles.format", "json")
     .load(f"{path_to_uc_external_location}")
 )

Udostępnianie zmaterializowanych widoków (tabele na żywo)

Domyślnie tabele utworzone przez potok mogą być odpytywane tylko przez właściciela potoku. Możesz dać innym użytkownikom możliwość wykonywania zapytań dotyczących tabeli przy użyciu instrukcji GRANT i można odwołać dostęp do zapytań przy użyciu instrukcji REVOKE . Aby uzyskać więcej informacji na temat uprawnień w wykazie aparatu Unity, zobacz Zarządzanie uprawnieniami w wykazie aparatu Unity.

Udzielanie wyboru w tabeli

GRANT SELECT ON TABLE
  my_catalog.my_schema.live_table
TO
  `user@databricks.com`

Odwoływanie zaznacznia w tabeli

REVOKE SELECT ON TABLE
  my_catalog.my_schema.live_table
FROM
  `user@databricks.com`

Udzielanie uprawnienia do tworzenia tabeli lub tworzenia zmaterializowanego widoku

GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
  my_catalog.my_schema
TO
  { principal | user }

Wyświetlanie pochodzenia potoku

Pochodzenie tabel w potoku Delta Live Tables jest widoczne w Eksploratorze wykazu. W przypadku zmaterializowanych widoków lub tabel przesyłania strumieniowego w potoku obsługującym wykaz aparatu Unity interfejs użytkownika pochodzenia eksploratora wykazu wyświetla tabele nadrzędne i podrzędne. Aby dowiedzieć się więcej na temat pochodzenia wykazu aparatu Unity, zobacz Przechwytywanie i wyświetlanie pochodzenia danych przy użyciu wykazu aparatu Unity.

W przypadku zmaterializowanego widoku lub tabeli przesyłania strumieniowego w potoku tabel delta live tables z obsługą wykazu aparatu Unity interfejs użytkownika pochodzenia eksploratora wykazu będzie również łączyć się z potokiem, który wygenerował zmaterializowany widok lub tabelę przesyłania strumieniowego, jeśli potok jest dostępny z bieżącego obszaru roboczego.

Dodawanie, zmienianie lub usuwanie danych w tabeli przesyłania strumieniowego

Instrukcje języka manipulowania danymi (DML), w tym instrukcje wstawiania, aktualizowania, usuwania i scalania, umożliwiają modyfikowanie tabel przesyłania strumieniowego publikowanych w wykazie aparatu Unity. Obsługa zapytań DML względem tabel przesyłania strumieniowego umożliwia stosowanie przypadków użycia, takich jak aktualizowanie tabel dla zgodności z ogólnym rozporządzeniem o ochronie danych (RODO).

Uwaga

  • Instrukcje DML modyfikujące schemat tabeli przesyłania strumieniowego nie są obsługiwane. Upewnij się, że instrukcje DML nie próbują rozwijać schematu tabeli.
  • Instrukcje DML, które aktualizują tabelę przesyłania strumieniowego, mogą być uruchamiane tylko w udostępnionym klastrze wykazu aparatu Unity lub w usłudze SQL Warehouse przy użyciu środowiska Databricks Runtime 13.3 LTS lub nowszego.
  • Ponieważ przesyłanie strumieniowe wymaga źródeł danych tylko do dołączania, jeśli przetwarzanie wymaga przesyłania strumieniowego ze źródłowej tabeli przesyłania strumieniowego ze zmianami (na przykład instrukcjami DML), ustaw flagę skipChangeCommits podczas odczytywania źródłowej tabeli przesyłania strumieniowego. Po skipChangeCommits ustawieniu transakcje, które usuwają lub modyfikują rekordy w tabeli źródłowej, są ignorowane. Jeśli przetwarzanie nie wymaga tabeli przesyłania strumieniowego, możesz użyć zmaterializowanego widoku (który nie ma ograniczenia tylko do dołączania) jako tabeli docelowej.

Poniżej przedstawiono przykłady instrukcji DML do modyfikowania rekordów w tabeli przesyłania strumieniowego.

Usuń rekordy z określonym identyfikatorem:

DELETE FROM my_streaming_table WHERE id = 123;

Aktualizuj rekordy przy użyciu określonego identyfikatora:

UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;