Udostępnij przez


Eksportowanie danych obszaru roboczego

Ta strona zawiera omówienie narzędzi i metod eksportowania danych i konfiguracji z obszaru roboczego usługi Azure Databricks. Zasoby obszaru roboczego można wyeksportować pod kątem wymagań dotyczących zgodności, przenośności danych, celów tworzenia kopii zapasowych lub migracji obszaru roboczego.

Przegląd

Obszary robocze usługi Azure Databricks zawierają różne zasoby, w tym konfigurację obszaru roboczego, tabele zarządzane, obiekty sztucznej inteligencji i uczenia maszynowego oraz dane przechowywane w magazynie w chmurze. Jeśli musisz wyeksportować dane obszaru roboczego, możesz użyć kombinacji wbudowanych narzędzi i interfejsów API, aby systematycznie wyodrębnić te zasoby.

Typowe przyczyny eksportowania danych obszaru roboczego obejmują:

  • Wymagania dotyczące zgodności: Spełnianie zobowiązań dotyczących przenoszenia danych zgodnie z przepisami, takimi jak RODO i KPIA.
  • Tworzenie kopii zapasowych i odzyskiwanie po awarii: tworzenie kopii krytycznych zasobów obszaru roboczego na potrzeby ciągłości działania.
  • Migracja obszaru roboczego: przenoszenie zasobów między obszarami roboczymi lub dostawcami usług w chmurze.
  • Inspekcja i archiwizacja: zachowywanie historycznych rekordów konfiguracji i danych obszaru roboczego.

Planowanie eksportu

Przed rozpoczęciem eksportowania danych obszaru roboczego utwórz spis zasobów, które należy wyeksportować i zrozumieć zależności między nimi.

Omówienie zasobów obszaru roboczego

Obszar roboczy usługi Azure Databricks zawiera kilka kategorii zasobów, które można wyeksportować:

  • Konfiguracja obszaru roboczego: notesy, foldery, repozytoria, wpisy tajne, użytkownicy, grupy, listy kontroli dostępu (ACL), konfiguracje klastra i definicje zadań.
  • Zasoby danych: tabele zarządzane, bazy danych, pliki systemu plików usługi Databricks i dane przechowywane w magazynie w chmurze.
  • Zasoby obliczeniowe: konfiguracje klastra, zasady i definicje puli wystąpień.
  • Zasoby sztucznej inteligencji i uczenia maszynowego: eksperymenty MLflow, przebiegi, modele, tabele Feature Store, indeksy wyszukiwania wektorowego i modele katalogu Unity.
  • Obiekty katalogu Unity: konfiguracja sklepu metadanych, katalogi, schematy, tabele, woluminy i uprawnienia.

Określanie zakresu eksportu

Utwórz listę kontrolną zasobów do wyeksportowania na podstawie wymagań. Weź pod uwagę następujące pytania:

  • Czy musisz wyeksportować wszystkie zasoby lub tylko określone kategorie?
  • Czy istnieją wymagania dotyczące zgodności lub zabezpieczeń, które określają, które zasoby należy wyeksportować?
  • Czy musisz zachować relacje między elementami zawartości (na przykład zadania odwołujące się do notesów)?
  • Czy musisz ponownie utworzyć konfigurację obszaru roboczego w innym środowisku?

Planowanie zakresu eksportu pomaga wybrać odpowiednie narzędzia i uniknąć brakujących krytycznych zależności.

Eksportowanie konfiguracji obszaru roboczego

Eksporter programu Terraform jest podstawowym narzędziem do eksportowania konfiguracji obszaru roboczego. Generuje pliki konfiguracji narzędzia Terraform reprezentujące zasoby obszaru roboczego jako kod.

Korzystanie z eksportera programu Terraform

Eksporter Terraform jest wbudowany w providera Terraform dla Azure Databricks i generuje pliki konfiguracyjne Terraform dla zasobów obszaru roboczego, w tym notesów, zadań, klastrów, użytkowników, grup, tajemnic i list kontroli dostępu. Eksporter musi być uruchamiany oddzielnie dla każdego obszaru roboczego. Zobacz Databricks Terraform provider.

Wymagania wstępne:

  • Narzędzie Terraform zainstalowane na maszynie
  • Skonfigurowane uwierzytelnianie usługi Azure Databricks
  • Uprawnienia administratora w obszarze roboczym, który chcesz wyeksportować

Aby wyeksportować zasoby obszaru roboczego:

  1. Zapoznaj się z przykładowym filmem instruktażowym, aby zobaczyć przewodnik po eksporterze.

  2. Pobierz i zainstaluj dostawcę programu Terraform za pomocą narzędzia eksportera:

    wget -q -O terraform-provider-databricks.zip $(curl -s https://api.github.com/repos/databricks/terraform-provider-databricks/releases/latest|grep browser_download_url|grep linux_amd64|sed -e 's|.*: "\([^"]*\)".*$|\1|')
    unzip -d terraform-provider-databricks terraform-provider-databricks.zip
    
  3. Skonfiguruj zmienne środowiskowe uwierzytelniania dla obszaru roboczego:

    export DATABRICKS_HOST=https://your-workspace-url
    export DATABRICKS_TOKEN=your-token
    
  4. Uruchom eksportera, aby wygenerować pliki konfiguracji programu Terraform:

    terraform-provider-databricks exporter \
      -directory ./exported-workspace \
      -listing notebooks,jobs,clusters,users,groups,secrets
    

    Typowe opcje eksportera:

    • -listing: Określ typy zasobów do wyeksportowania (rozdzielane przecinkami)
    • -services: Alternatywa do wyświetlania listy do filtrowania zasobów
    • -directory: katalog wyjściowy dla wygenerowanych .tf plików
    • -incremental: Uruchamianie w trybie przyrostowym na potrzeby migracji etapowych
  5. Przejrzyj wygenerowane .tf pliki w katalogu wyjściowym. Eksporter tworzy jeden plik dla każdego typu zasobu.

Uwaga / Notatka

Eksporter programu Terraform koncentruje się na konfiguracji i metadanych obszaru roboczego. Nie eksportuje rzeczywistych danych przechowywanych w tabelach ani w systemie plików usługi Databricks. Dane należy wyeksportować oddzielnie przy użyciu metod opisanych w poniższych sekcjach.

Eksportowanie określonych typów zasobów

W przypadku aktywów, które nie są w pełni objęte eksporterem programu Terraform, należy użyć następujących metod:

  • Notatniki: Pobierz notatniki indywidualnie z interfejsu użytkownika obszaru roboczego lub użyj interfejsu API obszaru roboczego do eksportowania notatników programowo. Zobacz Zarządzanie obiektami obszaru roboczego.
  • Wpisy tajne: nie można eksportować wpisów tajnych bezpośrednio ze względów bezpieczeństwa. Należy ręcznie odtworzyć sekrety w środowisku docelowym. Nazwy i zakresy tajne dokumentacji do celów referencyjnych.
  • Obiekty MLflow: użyj narzędzia mlflow-export-import do eksportowania eksperymentów, przebiegów i modeli. Zobacz sekcję Zasoby uczenia maszynowego poniżej.

Eksportowanie danych

Dane klientów zwykle są przechowywane w magazynie Twojego konta w chmurze, a nie w usłudze Azure Databricks. Nie musisz eksportować danych, które są już w magazynie w chmurze. Należy jednak wyeksportować dane przechowywane w lokalizacjach zarządzanych przez usługę Azure Databricks.

Eksportowanie tabel zarządzanych

Mimo że tabele zarządzane znajdują się w magazynie w chmurze, są przechowywane w hierarchii opartej na identyfikatorze UUID, która może być trudna do przeanalizowania. Możesz użyć DEEP CLONE polecenia , aby przepisać tabele zarządzane jako tabele zewnętrzne w określonej lokalizacji, co ułatwia pracę z nimi.

Przykładowe DEEP CLONE polecenia:

CREATE TABLE delta.`abfss://container@storage.dfs.core.windows.net/path/to/storage/`
DEEP CLONE my_catalog.my_schema.my_table

Aby uzyskać pełny skrypt klonowania wszystkich tabel na liście wykazów, zobacz poniższy przykładowy skrypt.

Eksportowanie domyślnego magazynu Databricks

W przypadku obszarów roboczych bezserwerowych usługa Azure Databricks oferuje domyślny magazyn, który jest w pełni zarządzanym rozwiązaniem magazynu na koncie usługi Azure Databricks. Dane w magazynie domyślnym muszą być eksportowane do kontenerów magazynu należących do klienta przed usunięciem lub zlikwidowaniem obszaru roboczego. Aby uzyskać więcej informacji na temat obszarów roboczych bezserwerowych, zobacz Tworzenie bezserwerowego obszaru roboczego.

W przypadku tabel w domyślnym kontenerze pamięci masowej użyj DEEP CLONE, aby zapisywać dane w kontenerze magazynu należącym do klienta. W przypadku woluminów i dowolnych plików postępuj zgodnie z tymi samymi wzorcami opisanymi w poniższej sekcji eksportu głównego systemu plików DBFS .

Eksportowanie katalogu głównego systemu plików Databricks

Główna lokalizacja systemu plików Databricks to przestarzała lokalizacja magazynowa na koncie magazynowym obszaru roboczego, która może zawierać zasoby należące do klienta, przekazy użytkowników, skrypty inicjowania, biblioteki i tabele. Mimo że katalog główny systemu plików Databricks jest przestarzałym wzorcem magazynowania, starsze przestrzenie robocze mogą nadal zawierać dane przechowywane w tej lokalizacji, które należy wyeksportować. Aby uzyskać więcej informacji na temat architektury magazynu obszarów roboczych, zobacz Magazyn obszarów roboczych.

Eksportuj katalog główny systemu plików Databricks:

Ponieważ zasobniki główne na platformie Azure są prywatne, nie można używać narzędzi natywnych Azure, takich jak azcopy, do przenoszenia danych między kontami magazynowymi. Zamiast tego należy używać funkcji dbutils fs cp Delta DEEP CLONE w usłudze Azure Databricks. Może to potrwać długo, w zależności od ilości danych.

# Copy DBFS files to a local path
dbutils.fs.cp("dbfs:/path/to/remote/folder", "/path/to/local/folder", recurse=True)

W przypadku tabel w głównym magazynie systemu plików Databricks użyj DEEP CLONE:

CREATE TABLE delta.`abfss://container@storage.dfs.core.windows.net/path/to/external/storage/`
DEEP CLONE delta.`dbfs:/path/to/dbfs/location`

Ważne

Eksportowanie dużych ilości danych z magazynu w chmurze może spowodować znaczne koszty transferu i magazynowania danych. Przed zainicjowaniem dużych eksportów przejrzyj cennik dostawcy usług w chmurze.

Typowe wyzwania związane z eksportowaniem

Tajemnice:

Wpisy tajne nie mogą być eksportowane bezpośrednio ze względów bezpieczeństwa. W przypadku korzystania z eksportera Terraform z opcją -export-secrets, eksporter generuje zmienną w vars.tf o takiej samej nazwie jak sekret. Należy ręcznie zaktualizować ten plik, używając rzeczywistych wartości sekretów, lub uruchomić eksportera Terraform z opcją -export-secrets (tylko dla sekretów zarządzanych przez Azure Databricks).

Usługa Azure Databricks zaleca używanie magazynu wpisów tajnych opartych na usłudze Azure Key Vault.

Eksportowanie zasobów sztucznej inteligencji i uczenia maszynowego

Niektóre zasoby sztucznej inteligencji i uczenia maszynowego wymagają różnych narzędzi i metod eksportowania. Modele Katalogu Unity są eksportowane jako część eksportera Terraform.

Obiekty MLflow

MLflow nie jest objęty eksporterem Terraform ze względu na luki w interfejsie API i trudności z serializacją. Aby wyeksportować eksperymenty MLflow, przebiegi, modele i artefakty, użyj narzędzia mlflow-export-import . To narzędzie typu open source zapewnia półuzupełnione pokrycie migracji MLflow.

Narzędzie eksportu importu MLflow.

W przypadku scenariuszy tylko do eksportu można przechowywać wszystkie zasoby platformy MLflow w zasobniku należącym do klienta bez konieczności wykonywania kroku importowania. Aby uzyskać więcej informacji na temat zarządzania MLflow, zobacz Zarządzanie cyklem życia modelu w Unity Catalog.

Indeksy wyszukiwania wektorowego: indeksy wyszukiwania wektorowego nie należą do zakresu procedur eksportu danych UE. Jeśli nadal chcesz je wyeksportować, należy je zapisać w standardowej tabeli, a następnie wyeksportować przy użyciu polecenia DEEP CLONE.

Baza cech: Baza cech powinna być traktowana w podobny sposób jak indeksy wyszukiwania wektorowego. Przy użyciu języka SQL wybierz odpowiednie dane i zapisz je w standardowej tabeli, a następnie wyeksportuj przy użyciu polecenia DEEP CLONE.

Weryfikowanie wyeksportowanych danych

Po wyeksportowaniu danych obszaru roboczego sprawdź, czy zadania, użytkownicy, notesy i inne zasoby zostały prawidłowo wyeksportowane przed zlikwidowaniem starego środowiska. Użyj listy kontrolnej utworzonej podczas fazy określania zakresu i planowania, aby sprawdzić, czy wyeksportowanie wszystkiego, co oczekiwano, zostało pomyślnie wyeksportowane.

Lista kontrolna weryfikacji

Użyj tej listy kontrolnej, aby zweryfikować eksport:

  • Wygenerowane pliki konfiguracji: pliki konfiguracji programu Terraform są tworzone dla wszystkich wymaganych zasobów obszaru roboczego.
  • Wyeksportowane notesy: wszystkie notesy są eksportowane z ich zawartością i metadanymi bez zmian.
  • Sklonowane tabele: tabele zarządzane zostały pomyślnie sklonowane do lokalizacji eksportu.
  • Skopiowane pliki danych: dane w magazynie chmury zostały skopiowane całkowicie bez błędów.
  • Wyeksportowane obiekty MLflow: eksperymenty, przebiegi i modele są eksportowane ze swoimi artefaktami.
  • Udokumentowane uprawnienia: listy kontroli dostępu i uprawnienia są przechwytywane w konfiguracji programu Terraform.
  • Zidentyfikowane zależności: Relacje między elementami zawartości (na przykład zadania odwołujące się do notesów) są zachowywane w eksporcie.

Najlepsze praktyki po eksporcie

Testy weryfikacji i akceptacji są w dużej mierze zależne od wymagań i mogą się znacznie różnić. Obowiązują jednak następujące ogólne najlepsze rozwiązania:

  • Definiowanie środowiska testowego: Zadbaj o testowanie zadań lub notesów, które sprawdzają, czy sekrety, dane, punkty montowania, konektory i inne zależności działają prawidłowo w wyeksportowanym środowisku.
  • Zacznij od środowiska developerskiego: w przypadku przechodzenia w sposób etapowy zacznij od środowiska developerskiego i stopniowo przechodź do środowiska produkcyjnego. Wykrywa poważne problemy wcześnie i pozwala uniknąć wpływu na produkcję.
  • Korzystaj z folderów Git: jeśli to możliwe, używaj folderów Git, ponieważ są one przechowywane w zewnętrznym repozytorium Git. Pozwala to uniknąć ręcznego eksportowania i zapewnia, że kod jest identyczny w różnych środowiskach.
  • Udotwórz proces eksportowania: zarejestruj używane narzędzia, wykonane polecenia i wszelkie napotkane problemy.
  • Bezpieczne wyeksportowane dane: upewnij się, że wyeksportowane dane są bezpiecznie przechowywane przy użyciu odpowiednich mechanizmów kontroli dostępu, zwłaszcza jeśli zawierają poufne lub osobowe informacje.
  • Zachowaj zgodność: w przypadku eksportowania na potrzeby zgodności sprawdź, czy eksport spełnia wymagania prawne i zasady przechowywania.

Przykładowe skrypty i automatyzacja

Eksporty obszarów roboczych można zautomatyzować przy użyciu skryptów i zaplanowanych zadań.

Deep Clone eksport skrypt

Poniższy skrypt eksportuje tabele zarządzane Unity Catalog przy użyciu polecenia DEEP CLONE. Ten kod powinien zostać uruchomiony w źródłowym obszarze roboczym, aby wyeksportować dany wykaz do zasobnika pośredniego. Zaktualizuj zmienne catalogs_to_copy oraz dest_bucket.

import pandas as pd

# define catalogs and destination bucket
catalogs_to_copy = ["my_catalog_name"]
dest_bucket = "<cloud-storage-path>://my-intermediate-bucket"
manifest_name = "manifest"

# initialize vars
system_info = sql("SELECT * FROM system.information_schema.tables")
copied_table_names = []
copied_table_types = []
copied_table_schemas = []
copied_table_catalogs = []
copied_table_locations = []

# loop through all catalogs to copy, then copy all non-system tables
# note: this would likely be parallelized using thread pooling in prod
for catalog in catalogs_to_copy:
  filtered_tables = system_info.filter((system_info.table_catalog == catalog) & (system_info.table_schema != "information_schema"))
  for table in filtered_tables.collect():
    schema = table['table_schema']
    table_name = table['table_name']
    table_type = table['table_type']
    print(f"Copying table {schema}.{table_name}...")
    target_location = f"{dest_bucket}/{catalog}_{schema}_{table_name}"
    sqlstring = f"CREATE TABLE delta.`{target_location}` DEEP CLONE {catalog}.{schema}.{table_name}"
    sql(sqlstring)

    # lists used to create manifest table DF
    copied_table_names.append(table_name)
    copied_table_types.append(table_type)
    copied_table_schemas.append(schema)
    copied_table_catalogs.append(catalog)
    copied_table_locations.append(target_location)

# create the manifest as a df and write to a table in dr target
# this contains catalog, schema, table and location
manifest_df = pd.DataFrame({"catalog": copied_table_catalogs,
                            "schema": copied_table_schemas,
                            "table": copied_table_names,
                            "location": copied_table_locations,
    "type": copied_table_types})

spark.createDataFrame(manifest_df).write.mode("overwrite").format("delta").save(f"{dest_bucket}/{manifest_name}")
display(manifest_df)

Zagadnienia dotyczące automatyzacji

Podczas automatyzowania eksportów:

  • Użyj zaplanowanych zadań: utwórz zadania usługi Azure Databricks, które uruchamiają skrypty eksportu zgodnie z regularnym harmonogramem.
  • Monitorowanie zadań eksportu: skonfiguruj alerty, aby otrzymywać powiadomienia, jeśli eksporty kończą się niepowodzeniem lub trwają dłużej niż oczekiwano.
  • Zarządzaj poświadczeniami: przechowuj bezpiecznie poświadczenia do magazynu w chmurze i tokeny API za pomocą funkcji tajemnic w usłudze Azure Databricks. Zobacz Zarządzanie tajemnicami.
  • Eksporty wersji: użyj sygnatur czasowych lub numerów wersji w ścieżkach eksportu, aby zachować eksport historyczny.
  • Czyszczenie starych eksportów: zaimplementuj zasady przechowywania, aby usunąć stare eksporty i zarządzać kosztami magazynowania.
  • Eksporty przyrostowe: w przypadku dużych obszarów roboczych rozważ zaimplementowanie eksportów przyrostowych, które eksportują tylko zmienione dane od ostatniego eksportu.