[Dyskusja] [Baza wiedzy] Parquet vs Delta – co i kiedy wybierać ?

  • [Dyskusja] [Baza wiedzy] Parquet vs Delta – co i kiedy wybierać ?

    Posted by Mateusz Wąsalski on 2024-11-03 at 13:31

    Hello.

    jakie macie doświadczenia ?

    Pracuję na razie z danymi, które na pewno nie są BIG i używam Parqueta.

    Co stoim za moim wyborem (korzystam Azure Synapse Analytics i Pythona do walidowania danych):

    – na początku używałem Delty jako sinka w data flow, ale raz, że nie mogłem nadać temu nazwy takiej, jakiej chciałem, dwa: rozbijało mi to output na kilka plików, trzy: nie wiedzieć czemu, tylko przy wyborze Parquet jako sink type mogłem użyć opcji “Clear folder” i nadać plikowi nazwę taką, jaką chciałem

    – Power BI musi być ‘replikowalny’, więc dużo łatwiej jest mi utrzymać raport, który ma zawsze source jako jeden plik o danej nazwie

    – w Pythonie mam wrażenie, że parquet lepiej chodzi + kilka funkcji, jakie napisałem, byłyby nie do zrobienia (albo dużo trudniejsze), gdybym miał różne nazwy plików

    Teoria teorią, nawet wypromptowałem sobie takie podsumowanie:

    Parquet:

    • Columnar storage format.
    • Efficient for read-heavy operations.
    • Great for big data processing.

    Delta:

    • Built on Parquet.
    • Adds ACID transactions and versioning.
    • Ideal for data lakes, where data consistency is crucial.

    Choose Parquet for analytics-focused tasks with less frequent writes.

    Choose Delta for environments needing data reliability and transaction support, like data lakes.

    no ale ludzkiego doświadczenia nie przebije nic 😉

    + uważam, że temat jest na tyle ważny, że dobrze by było podsumowanie naszej dyskusji przenieść do bazy wiedzy.

    Jan Czuma replied 1 month, 3 weeks ago 3 Members · 3 Replies
  • 3 Replies
  • Marek

    Organizer
    2024-11-04 at 11:11
    224 Punkty

    Ja używam delty w Databricksach tylko, ale w sumie pytanie samo w sobie jest “oszukane”, bo używając delty używamy także parqueta;-).

    Tak czy siak – uważam że parquet to naprawdę świetny wybór, bardzo popularny nie bez powodu. Moim zdaniem powinien być domyślnym wyborem przy większości architektur, chyba że potrzebujemy czegoś innego – wlaśnie jak np. coś a la tabularyczna baza danych, gdzie można dopiąć jeszcze delta lake.

    Dorzucę jeszcze jedną rzecz – jest format bardzo podobny do parqueta, a mianowicie ORC. I z nim raz pracowałem, gdy okazalo się że jest lepszy podczas pracy z Hive. Nie pamiętam dokładnie o co chodziło, ale ORC lepiej radził sobie z datowo-czasowymi typami.

  • Jan Czuma

    Member
    2024-11-04 at 20:28
    24 Punkty

    Hej
    Grubszy temat, nad którym warto spędzić trochę więcej czasu, ale postaram się zacząć z mojej strony na szybko.
    Na start powiem, że będę pisał w oderwaniu od technologii Azurowych, więc w połączeniu dajmy na to z Synapsem może się okazać, że są jeszcze inne ważne czynniki, które warto wziąć pod uwagę.
    Do porównania dodałbym Iceberga jako bezpośredniego konkurenta Delty. Jeśli nie miałeś z Icebergiem styczności, polecam bo ma kilka fajnych ficzerów i dla mnie osobiście był bardziej intuicyjny niż Delta na start. Warto wspomnieć, że Databricksy kupiły jakiś czas temu startup Tabular, który zajmuje się komercyjnym wsparciem dla Iceberga i z tego co wiem nie planują go ubijać, wręcz przeciwnie.

    Tak zupełnie na szybko w temacie Delty. Myślę, że trzeba sobie zadać pytanie co Delta daje jako, że jest to poniekąd dodatkowa warstwa na Parquetcie. Z takich pierwszych oczywistości:

    1. ACID – choć w świecie Big Data często nie zwraca się na to uwagi, to jednak coraz częściej możliwość zapewnienia transakcji jest kluczowa.
    2. “Podróże w czasie” – czyli generalnie pewna forma wersjonowania danych, co często jest kluczowe. Dodatkowo ułatwia to zarządzanie kwestiami związanymi z retencją danych kiedy chcemy np. usuwać dane z konkretnego okresu przy jednoczesnym optymalizowaniu wielkości i ilości plików pod zapytania.
    3. “Schema evolution” – o ile z tego co wiem Parquet wspiera, to z tego co kojarzę Delta (i Iceberg) zarządzają ewolucją schemy również na innym poziomie co ułatwia ogarnianie całości.

    Jednak to co wg mnie jest naprawdę wartością dodaną to indeks, który zarówno Delta, jak i Iceberg tworzą. Robią to na warstwie metadanych, więc jest dosyć szybki dostęp do nich. Z grubsza w wydaniu Iceberga (ale Delty raczej też, tylko już nie kojarzę detali) polega to na wyliczaniu statystyk w stylu np. min., max. wartości dla poszczególnych kolumn dla konkretnego pliku. Dzięki temu jak odpytujemy tabele w Delta/Iceberg to cały zbiór plików zawężany jest tylko do tych, które zawierają dane wartości. Ogólnie tak jak pisałem – taka forma indeksu.

    Oczywiście minusem Delty/Iceberga jest pewien narzut, który dodają swoją obecnością przez co jest dodatkowa warstwa, którą trzeba zarządzać, utrzymywać (a po X miesiącach/latach jest co utrzymywać), ale też dostarczają pewne narzędzia, żeby to ogarniać w miarę sensownie.

Zaloguj się aby odpowiedzieć