• Przejdź do treści
  • Przejdź to drugiego menu
  • Przejdź do głównego paska bocznego
  • Przejdź do stopki
  • START
  • BLOG
  • NEWSLETTER
  • KIM JESTEM
  • KONTAKT
Cegładanych

Cegładanych

Dane - Databricks i Chmura Azura

  • Azure
  • Databricks
  • Spark
  • Etl
  • Engineering
  • AI

Kilka pomysłów na konfigurację Databricks

26.11.2024 Krzysztof Nojman

W wielu przypadkach ładowania danych w procesie ETL będziesz potrzebował/ła sparametryzować proces zasilania. Prawie każdy pipeline wymaga jakiś parametrów, np. nazwa tabeli, nazwa środowiska (dev, test, prod) ect.. Im bardziej skomplikowany pipeline tym więcej parametrów potrzeba. Jeśli parametrów jest kilka to możemy je nazwać pop prostu „parametrami” 😁, ale jak się pipeline komplikuje i trzeba 30 elementów obsłużyć to wtedy nazywa się to konfiguracja. Oto kilka propozycji jak to ogarnąć w Databricks:

Zanim dobierzesz konfigurację do swojego problemu ważne jest żeby przeanalizować dokładnie problem. Jak to zwykle bywa trzeba zadać kilka pytań, które doprowadzą cię do rozwiązania.

Jak często parametry będą aktualizowane. Jeśli będą one aktualizowane bardzo często to plik w repozytorium trzeba jakoś uaktualnić. Kwestia czy taka aktualizacja odbędzie się zgodnie z harmonogramem releasa. Są projekty gdzie kod jest wrzucany na prod raz na tydzień są też takie gdzie można go wrzucać codziennie. I teraz jeśli masz proces tygodniowy, a zmiany do konfiguracji klient chce robić trzy razy w tygodniu. To by oznaczało, że repo to nie najlepsze miejsce i trzeba wrzucić go gdzie indziej. to jest rzadki case, ale chcę zwrócić uwagę na sposób myślenia przy podejmowaniu decyzji. Polecam rozrysować sobie drzewko decyzyjne, które doprowadzi Cię do celu, przykład z artykułu o Big Data. Tip❗❗❗ i dobra praktyka trzymaj je w repo chyba, że jest jakaś wyjątkowa sytuacji gdzie nie możesz tego zrobić.

Oto kilka przykładów:

  1. Parametr notatnika
  2. Csv
  3. Tabela
  4. Json
  5. Słownik

Parametry notatnika

To jest najbardziej oczywiste miejsce gdzie powinieneś stworzyć najważniejsze parametry. Tutaj wrzucasz te najważniejsze czyli środowisko, nazwa tabeli, to co jest niezbędne dla danego notatnika. Same parametry wrzucasz do komórki w notatniku. Ich ilość będzie ograniczona, nie zalecał bym ładowania nadmiernej ilości bo będzie bałagan i ciężkie do utrzymania. Najczęściej będą one pochodzić z narzędzie uruchamiającego notatnik np. Azure Data Factory. Przykład poniżej

parametry notatnika

Csv

Jeśli masz potrzebę na kilkanaście bądź kilkadziesiąt parametrów to trzeba wykorzystać jakieś mocniejsze narzędzie. Ważne jest żeby parametry jak wszystko były w repozytorium. A plik csv jest łatwy to czytania i utrzymania. Można go otworzyć z Excela i tam zarządzać. Csv jest przydatny jeśli wystarczy płaska „dwu wymiarowa” struktura konfiguracji.

Działając w Databricks pliki z repozytorium są ładowane do Workspace podczas procesu CI/CD. Jeśli używasz Unity Catalog to dobrym miejscem są Volumes bądź Dbfs. Oczywiście może to być jakiś storage. Stamtąd twój proces wczyta plik wyciągnie niezbędne informacje i użyje ich w procesie. Możesz ich użyć bezpośrednio, chociaż ja bym polecał wrzucić do tabeli szczególnie jeśli jest ich dużo.

Warto dodać o czymś dość ważnym jak walidacji takich parametrów. Podczas czytania takiego pliku z konfiguracjami warto sprawdzić, czy wartości są zgodne z regułami. Bez walidacji może tam wpaść coś co popsuje dane, a tego byśmy nie chcieli.

Git

Tabela

Bardziej pasuje do pliku csv, bo ma płaska strukturę. Sam plik csv możesz używać w procesie jeśli konfiguracja jest potrzebna w jednym miejscu bądź w kilku. A co jeśli dane konfiguracyjne są potrzebne w wielu pipelinach i cała masa procesów ciągle musi mieć dostęp do tego pliku. Wtedy sam csv i jego bezpośrednie użycie może być nie efektywne. W takim przypadku wczytujesz plik konfiguracyjny z dysku i ładujesz go to tabeli. Możesz użyć do tego dedykowanego notatnika, który będzie odpowiedzialny za ładowanie i walidacje danych konfiguracyjnych.

Zaletą tabeli jest jej dostępność w całym środowisku Databricks. Masz możliwość zadbania o jakąś historię czy wersjonowanie takiej konfiguracji. Można ją potraktować jak SCD (slowly changing dimentions) i przechowywać historię danych konfiguracyjnych.

Json

Jeśli proces jest bardziej skomplikowany i trzeba trzymać zależności w konfiguracjach. Możesz potrzebować hierarchiczności w procesie wtedy wkracza mój ulubiony plik czyli json. Jest powód dlaczego jest tak popularny bo ma wielką moc, możesz tam zbudować całą skomplikowaną drzewiastą strukturę. A jego zaletą jest łatwość czytania, każdy język programowania ma jakąś bibliotekę do obróbki jsona. Z tym problemów raczej nie ma.

Takiego jsona ładujemy do repo i wyciągamy w procesie CI/CD. Powinien znajdować się jak najbliżej procesu gdzie będzie używany – Databricks. Zasada taka sama jak w csv wrzuć go do Volues lub Dbfs ewentualnie storage.

parametry json
flatten json

Słownik

Dla pewnych konfiguracji najwygodniej może być przetrzymywanie ich w dedykowanym notatniku. Tworzysz sobie notatnik tam wrzucasz słownik czyli prosty obiekt Pythonowy. Jeśli nie masz zbyt skomplikowanych wymagań to taki słowniczek może się świetnie sprawdzić.

Zaletą jest prostota rozwiązania i możliwość wrzucenia sporej ilości elementów. Wadą jest nie efektywny format dla bardziej skomplikowanej hierarchicznej struktury. Coś takiego możesz rozważyć jeśli pozostałe metody wydają się nie dostateczne. Możesz go użyć bezpośrednio w kodzie bądź zasilić dedykowaną tabelę. Mogą tam być wartości dla każdego środowiska, niech ogranicza Cię tylko twoja wyobraźnia.

czytaj słownik

CI/CD

Bardzo ważna część, wspominałem już o tym, ale chcę to podkreślić, cały proces zasilania konfiguracji musi być zautomatyzowany. To proces CI/CD przenosi pliki z repozytorium do miejsca docelowego. To już zależy od użycia, ale ogólna zasada ładuj go do Databricsa żeby był jak najbliżej procesu, w którym będzie użyty.

Podsumowanie

Każda z tych rozwiązań ma swoje wady i zalety. Dla każdego rozwiązania jedna z nich może być mniej lub bardziej optymalna. Musisz sprawdzić co jest najłatwiejsze w implementacji i utrzymaniu. Ma być solidne żeby nie dało się czegoś popsuć. Tutaj przypomina mi się zasada Poka-yoke. Wymyślna została przy produkcji samochodów przez Toyotę i to nic innego jak zabezpieczanie przed błędami użytkownika. Jak coś projektujesz to postaraj się żeby nie dało się czegoś popsuć przez przypadek. Przykład walidacji konfiguracji żeby była zgodna z regułami biznesu. Docelowe miejsce takiej konfiguracji musi być ściśle kontrolowane przez proces i nie dostępne dla zwykłego użytkownika.

Daj znać gdzie trzymasz i jak zarządzasz konfiguracją ?

W kategorii:Databricks Tagi:Databricks, ETL, Konfiguracja

Big Data ebook
Subskrybuj
Powiadom o
guest

guest

2 Komentarze
Najstarsze
Najnowsze Najwięcej głosów
Opinie w linii
Zobacz wszystkie komentarze
Pawel
Pawel
7 miesiące temu

ja wole hocon i czytanie przez dacite

0
Odpowiedz
Krzysztof Nojman
Krzysztof Nojman
Autor
Odpowiedź do  Pawel
6 miesiące temu

Dzięki za informacje, nie słyszałem o tym, na dzień dzisiejszy wszyscy w zespole znają json lub yml i na tym działamy, nie trzeba dodatkowych narzędzi. Na pierwszy rzut oka jest prościej. Musiałbym zobaczyć w czym to jest lepsze, czy ma jakieś dodatkowe funkcjonalności.

0
Odpowiedz

Pierwszy panel boczny

O MNIE

Narzędzia i dobre procesy do przetwarzania danych to podstawa sukcesu i wartości dla firmy. Czytaj więcej…

big data ebook

Ostatnie wpisy

Jak zainstalować Python whl na Serverless

15.02.2026 By Krzysztof Nojman

Jak efektywnie korzystać z Databricks Assistant – 5 sprawdzonych praktyk

16.11.2025 By Krzysztof Nojman

Databricks DQX

Jakość danych w Databricks DQX

28.01.2025 By Krzysztof Nojman

Linki społecznościowe

  • Facebook
  • GitHub
  • LinkedIn
  • YouTube

Wyszukiwanie

Footer

Najnowsze wpisy

  • Databricks Klastry
  • Jak zainstalować Python whl na Serverless
  • Jak efektywnie korzystać z Databricks Assistant – 5 sprawdzonych praktyk
  • Jakość danych w Databricks DQX
  • Jak Spark robi join?
  • Czy JSON to samo zło
  • VS Code nowości AI 

Tagi

AI Apache Spark Architektura Azure BIg Data Certyfikat cloud Databricks Data Factory Dataframe DQX ETL Hurtownia Danych Intellij IoT Jaka technologia Join Kod Konfiguracja lakehouse Narzędzia Optymalizacja pyspark Spark Windows 10 zadania

Informacje Prawne

To jest nudna część lecz wymagana, wszystkie notki prawne o stronie znajdziecie tutaj.

Polityka Prywatności

Regulamin

Copyright © 2026 · Wszelkie prawa zastrzeżone. Krzysztof Nojman

wpDiscuz