Blog JSystems - uwalniamy wiedzę!

Szukaj
Big Data · Porównanie

Zespół JSystems · przewodnik 2026 · czas czytania ok. 17 min

Animacja: to samo zapytanie SQL trafia do dwoch silnikow - Apache Hive na silniku Tez oraz Apache Spark in-memory - i oba zwracaja identyczny wynik
To samo pytanie, dwa silniki, ten sam wynik. Hive i Spark policzą identyczną analizę na tych samych danych - różni ich to, jak dochodzą do wyniku. Ten artykuł rozkłada te różnice na czynniki pierwsze.

Apache Spark i Apache Hive to dwa najczęściej mylone ze sobą narzędzia świata Big Data. Oba potrafią przeliczyć ogromne zbiory danych zwykłym SQL, oba pochodzą z ekosystemu Hadoop - a mimo to są zupełnie inne. W tym przewodniku pokażemy różnice nie na sucho, lecz na żywym Sparku i żywym Hive uruchomionych w kontenerach, na tym samym zbiorze 53 031 transakcji sprzedaży. Zobaczysz identyczne wyniki, realne plany wykonania, prawdziwy panel Spark UI i uczciwy pomiar czasów - a na końcu jasną odpowiedź, kiedy wybrać które (i dlaczego często warto mieć oba).

Czym jest Hive, a czym Spark

Najkrótsza możliwa odpowiedź brzmi: Apache Hive to hurtownia danych z dostępem przez SQL, a Apache Spark to uniwersalny silnik obliczeniowy, który SQL ma tylko jako jedną z wielu możliwości. To rozróżnienie tłumaczy niemal wszystkie dalsze różnice, więc warto je dobrze osadzić.

Infografika porownujaca Apache Hive (hurtownia SQL nad Hadoopem) z Apache Spark (uniwersalny silnik obliczen in-memory) - ich role, sercem i najlepsze zastosowania
Dwa różne pomysły na przetwarzanie danych. Hive daje analitykom SQL nad plikami w Hadoopie; Spark to ogólny silnik, który liczy w pamięci i obsługuje SQL, strumienie i uczenie maszynowe jednym narzędziem.

Hive powstał w Facebooku, by analitycy mogli odpytywać dane w Hadoopie zwykłym SQL, zamiast pisać ręcznie kod MapReduce. Jego sercem jest Metastore (katalog tabel i partycji) oraz serwer HiveServer2. Hive myśli tabelami - dokładnie jak klasyczna hurtownia. Jeśli chcesz poznać go od podszewki, opisaliśmy to w osobnym artykule o tym, czym jest Apache Hive i jak działa od środka.

Spark narodził się na uniwersytecie Berkeley jako odpowiedź na wolność MapReduce. Jego kluczowy pomysł to przetwarzanie w pamięci (in-memory) zamiast zapisywania każdego kroku na dysk. Spark nie jest przywiązany do Hadoopa - czyta dane z HDFS, chmury (S3), plików czy baz - i udostępnia jeden silnik do SQL, potoków ETL, strumieni danych i uczenia maszynowego. To dlatego stał się domyślnym wyborem inżynierów danych. Szerszy kontekst obu narzędzi znajdziesz w przeglądzie współczesnych rozwiązań Big Data.

Ta sama analiza, dwa silniki, ten sam wynik

Zamiast opowiadać, pokażmy. Przygotowaliśmy jeden zbiór - 53 031 transakcji sprzedaży i mały wymiar 20 produktów - i załadowaliśmy dokładnie te same pliki CSV do Hive i do Sparka. Zacznijmy od strony Sparka: wczytujemy plik i nakładamy na niego schemat (to znany z Hive model schema-on-read, czyli schemat przy odczycie).

Terminal PySpark: wczytanie pliku sprzedaz.csv ze schematem i podglad pieciu pierwszych wierszy z polskimi nazwami regionow
Start sesji Spark i podgląd danych. Spark, podobnie jak Hive, nakłada schemat na surowy plik dopiero przy odczycie - te same 53 031 wierszy, ten sam zbiór.

Teraz najważniejszy dowód. Zadajmy oba pytania analityczne - agregację sprzedaży według regionu - najpierw w Sparku, potem w Hive. Zwróć uwagę na liczby: są co do jednego identyczne.

Terminal PySpark z agregacja GROUP BY wedlug regionu: Slaskie 8839 transakcji i 17841 sztuk na pierwszym miejscuTerminal Hive Beeline z ta sama agregacja GROUP BY wedlug regionu: identyczne liczby Slaskie 8839 i 17841
Po lewej Spark (DataFrame API), po prawej Hive (HiveQL). Ten sam zbiór, to samo pytanie, identyczny wynik: Śląskie 8 839 transakcji i 17 841 sztuk. Silnik jest inny, odpowiedź ta sama.

To samo dzieje się przy bardziej złożonym zapytaniu ze złączeniem (JOIN) tabel sprzedaży i produktów, liczącym przychód według kategorii. Elektronika daje ponad 42 miliony złotych - i tę samą kwotę co do grosza policzą oba silniki.

Terminal PySpark: JOIN sprzedazy z produktami, przychod wedlug kategorii, Elektronika 42395195.00Terminal Hive: ten sam JOIN, przychod wedlug kategorii, Elektronika 42395195.00 - identycznie
Złączenie dwóch tabel i przychód według kategorii - Spark (po lewej) i Hive (po prawej). Elektronika: 42 395 195,00 zł w obu. Skoro wynik jest ten sam, pozostaje pytanie o to, jak każdy silnik do niego dochodzi.

Architektura obok siebie

Oba narzędzia mają warstwę klienta, optymalizator zapytań, warstwę wykonania i warstwę zasobów - ale rozkładają akcenty inaczej. Poniższa infografika stawia obie architektury obok siebie.

Infografika: architektura Apache Hive (Klient, HiveServer2, Metastore, silnik Tez, YARN, HDFS) obok architektury Apache Spark (aplikacja i Driver, Catalyst, Executory w pamieci, Cluster Manager, zrodlo danych)
Architektura Hive kontra Spark. Hive stoi na Hadoopie (YARN + HDFS) i myśli tabelami z Metastore. Spark to samodzielny silnik: Driver planuje, Executory liczą dane w pamięci, a źródłem może być cokolwiek - HDFS, chmura, pliki, bazy.

Kluczowa różnica jest taka: Hive to warstwa SQL nad Hadoopem - potrzebuje YARN do zasobów i HDFS do danych, a swój plan oddaje silnikowi (dziś zwykle Tez). Spark jest samodzielny: sam zarządza wykonaniem przez Driver i Executory, dane trzyma w pamięci procesów wykonawczych, a zasobami może dzielić YARN, Kubernetes albo jego własny menedżer. Spark nie potrzebuje Hive ani nawet Hadoopa, żeby działać.

Model wykonania: dysk kontra pamięć

Tu leży serce różnicy w wydajności. Klasyczny MapReduce, na którym wyrósł Hive, po każdym kroku zapisywał wynik pośredni na dysk i czytał go z powrotem w kroku następnym. Przy wielokrokowych obliczeniach to mnóstwo operacji wejścia-wyjścia. Spark zaprojektowano tak, by dane pomiędzy krokami zostawały w pamięci (RAM), co przy złożonych i iteracyjnych potokach potrafi dać ogromną oszczędność.

Animacja modelu wykonania: w gornym torze Hive na MapReduce zapisuje dane na dysk miedzy kolejnymi krokami, w dolnym torze Spark przekazuje dane miedzy krokami w pamieci RAM
Dysk kontra pamięć. MapReduce zrzucał wynik każdego kroku na dysk i czytał go ponownie; Spark przekazuje dane między krokami w pamięci. Nowoczesny Tez też skraca te zapisy - dlatego przy pojedynczych zapytaniach różnica bywa mała, a przy wielokrokowych rośnie.

Najlepiej widać to na mechanizmie cache. Gdy wracasz do tych samych danych - co jest normą przy raportach, iteracjach i uczeniu maszynowym - Spark potrafi trzymać je w pamięci i nie czytać ponownie z dysku. W naszym demo to samo zapytanie z pamięci policzyło się ponad jedenaście razy szybciej niż z dysku.

Animacja: to samo zapytanie w Spark liczone najpierw z dysku (1.39 s), a po wywolaniu cache z pamieci (0.12 s), co daje 11.4 raza szybciej
Model in-memory w liczbach. Pierwszy odczyt z dysku: 1,39 s. Po wywołaniu cache() te same dane z pamięci: 0,12 s - czyli 11,4 raza szybciej. Hive przy każdym zapytaniu czyta dane od nowa.

To właśnie ta cecha zbudowała pozycję Sparka. Jeśli chcesz nauczyć się budować takie potoki w praktyce - z realnymi zadaniami na dużych zbiorach, a nie tylko w teorii - to najkrótsza droga do tego, by z Big Data zacząć realnie korzystać.

Chcesz przetwarzać duże zbiory danych w praktyce? Szkolenie Big Data: Przetwarzanie danych Big Data z Apache Spark ma terminy gwarantowane.

SQL czy kod: HiveQL kontra DataFrame API

W Hive masz jeden język: HiveQL, czyli dialekt SQL. To jego wielka zaleta - każdy, kto zna SQL, jest w domu. Spark daje wybór. Możesz pisać identyczny SQL, a możesz sięgnąć po DataFrame API w Pythonie, Scali czy Javie, które pozwala budować transformacje jak w kodzie. Poniżej to samo pytanie zadane w Sparku czystym SQL - składnia praktycznie nie różni się od HiveQL.

Terminal PySpark: to samo zapytanie GROUP BY zadane metoda spark.sql z czystym SQL, skladnia jak w HiveQL
Spark SQL: to samo pytanie, składnia jak w HiveQL. Jeśli znasz SQL z Hive, w Sparku możesz pisać dokładnie tak samo - albo przełączyć się na DataFrame API, gdy potrzebujesz więcej kontroli.

W praktyce oba style łączy się swobodnie. Poniższy fragment pokazuje, że w Sparku ten sam wynik osiągniesz i przez API, i przez SQL - to kwestia wygody, nie ograniczeń.

# Spark: nakładamy schemat na surowy plik CSV (schema-on-read)
sprzedaz = spark.read.csv("sprzedaz.csv", schema=schemat)
sprzedaz.createOrReplaceTempView("sprzedaz")

# to samo pytanie można zadać dwoma stylami:
# 1) DataFrame API
sprzedaz.groupBy("region").agg(sum("ilosc")).show()
# 2) czysty SQL - składnia jak w HiveQL
spark.sql("SELECT region, SUM(ilosc) FROM sprzedaz GROUP BY region").show()

Ta wszechstronność bywa też pułapką dla początkujących: więcej możliwości to większa krzywa wejścia. Dlatego solidne podstawy SQL opłacają się niezależnie od silnika - to wspólny mianownik Hive, Spark SQL i każdej hurtowni danych. Wyniki takich zapytań często trafiają potem do dalszej analizy danych w Pythonie z biblioteką pandas albo do narzędzi raportowych.

Chcesz opanować Apache Hive i język HiveQL w praktyce - od podstaw po techniki zaawansowane? Zajrzyj na Szkolenie Big Data: Apache Hive - HiveQL od podstaw do technik zaawansowanych.

Jak silnik liczy: plany wykonania

Oba narzędzia pokazują, jak zamierzają policzyć zapytanie, zanim je uruchomią. W Hive robi to polecenie EXPLAIN - poniżej plan na silniku Tez, z optymalizatorem kosztowym (CBO) i wektoryzacją.

Terminal Hive: plan wykonania EXPLAIN na silniku Tez, z optymalizacja CBO, wierzcholkami Map i Reducer oraz skanowaniem tabeli
Plan wykonania w Hive (EXPLAIN) na silniku Tez. Widać zależność wierzchołków (Reducer zależy od Map) i optymalizator kosztowy CBO - to graf zadań, który Tez uruchomi na klastrze.

Spark ma swój optymalizator - Catalyst - i pokazuje plan fizyczny poleceniem explain. Zwróć uwagę na AdaptiveSparkPlan: to mechanizm AQE (Adaptive Query Execution), który potrafi zmieniać plan w trakcie, gdy pozna faktyczne rozmiary danych.

Terminal PySpark: plan fizyczny Catalyst z AdaptiveSparkPlan, HashAggregate, Exchange i Scan csv dla zapytania GROUP BY
Plan wykonania w Spark (Catalyst). AdaptiveSparkPlan na szczycie to adaptacyjne wykonanie zapytań - Spark dostraja plan w locie. Niżej te same operacje co w Hive: skan, agregacja, wymiana danych (Exchange).

Największą przewagą Sparka w codziennej pracy jest jednak jego panel WWW (Spark UI). Uruchamia się automatycznie i pokazuje każde zadanie na żywo. Poniżej realny zrzut z naszego demo - lista szesnastu zakończonych zadań z czasami wykonania.

Zrzut realnego panelu Spark Web UI, zakladka Jobs: lista szesnastu zakonczonych zadan z czasami i etapami, aplikacja Analiza sprzedazy JSystems
Panel Spark UI (zakładka Jobs) z naszego środowiska. Widać wszystkie uruchomione zadania, ich czas i liczbę etapów - bezcenne przy diagnozowaniu, co i dlaczego trwa.

Jeszcze ciekawszy jest podgląd pojedynczego zapytania jako grafu (DAG). Poniżej realny plan naszego zapytania ze złączeniem. Spark rozpoznał, że tabela produktów jest mała, i zastosował BroadcastHashJoin - rozesłał ją do wszystkich zadań zamiast kosztownie przetasowywać dużą tabelę sprzedaży.

Zrzut realnego panelu Spark Web UI: graf wykonania (DAG) zapytania JOIN z wezlami Scan csv, WholeStageCodegen, BroadcastExchange, BroadcastHashJoin, HashAggregate
Graf wykonania (DAG) zapytania JOIN w panelu Spark UI. Mały wymiar produktów (20 wierszy) trafia do BroadcastExchange i BroadcastHashJoin, a duża tabela sprzedaży (53 031) nie musi być przetasowywana - to typowa optymalizacja Sparka.

Partycjonowanie: oba pomijają zbędne dane

Podstawą wydajności w obu narzędziach jest partycjonowanie - fizyczny podział danych, dzięki któremu zapytanie czyta tylko potrzebny fragment. Hive robi to na tabelach ORC, Spark - na przykład na plikach Parquet. W Sparku zapisaliśmy sprzedaż podzieloną według roku i miesiąca, a potem zapytaliśmy o jeden miesiąc.

Terminal PySpark: zapis danych do Parquet z partycjami po roku i miesiacu, a nastepnie zapytanie o grudzien 2024 zwracajace 2831 wierszy
Spark zapisuje dane do Parquet z podziałem na rok i miesiąc, a następnie pyta o jedną partycję (grudzień 2024): 2 831 wierszy. Tak samo jak Hive, Spark potrafi pominąć resztę danych.

Że faktycznie pomija resztę, potwierdza plan wykonania. W sekcji skanu Parquet widać PartitionFilters z warunkiem na roku i miesiącu - Spark z góry wie, których katalogów nie musi otwierać. To jest partition pruning, dokładnie ten sam mechanizm, który w Hive skraca skanowanie ogromnych tabel.

Terminal PySpark: plan Catalyst dla zapytania do jednej partycji, z widoczna sekcja PartitionFilters ograniczajaca skan do roku 2024 i miesiaca 12
Plan potwierdza pominięcie partycji. Linia PartitionFilters z warunkiem rok = 2024 i miesiąc = 12 oznacza, że Spark otworzy tylko jeden katalog danych zamiast całego zbioru.

Ile naprawdę trwają te same zapytania

Przejdźmy do liczb - ale uczciwie. Uruchomiliśmy te same cztery zapytania na obu silnikach, na tym samym zbiorze, w jednowęzłowym demo w Dockerze. To nie jest benchmark klastrowy i nie służy do ogłaszania zwycięzcy - służy pokazaniu, jak każdy silnik się zachowuje.

Infografika slupkowa: realne czasy czterech zapytan (COUNT, GROUP BY, JOIN, jedna partycja) dla Hive i Spark, plus dwa boksy: koszt zimnego startu Hive 28 sekund oraz cache Spark 11.4 raza szybciej
Realny pomiar na 53 031 wierszach. Na tak małych danych różnice w sekundach są drugorzędne. Ważniejsze jest to, co po bokach: Hive płaci jednorazowy koszt startu sesji (~28 s przy pierwszym zapytaniu), a Spark nagradza powtarzane odczyty pamięcią (11,4 raza).

Wnioski są dwa i oba są ważniejsze niż same słupki. Po pierwsze, Hive płaci koszt zimnego startu: pierwsze zapytanie po otwarciu sesji Tez trwało u nas prawie 28 sekund, bo silnik musiał wystartować na klastrze - kolejne schodziły do 1-2 sekund. Widać to na realnym zrzucie z Hive poniżej.

Terminal Hive: realne wykonanie zapytania na silniku Tez, widoczne otwieranie sesji Tez na klastrze YARN i wynik agregacji wedlug regionu
Silnik Tez w Hive uruchamia zapytanie na klastrze YARN. Pierwsze uruchomienie po starcie sesji jest najwolniejsze - to jednorazowy koszt, który przy kolejnych zapytaniach znika.

Po drugie, Spark nagradza powtarzalność: przy pierwszym odczycie z dysku jest porównywalny z Hive, ale gdy dane wpadną do pamięci (cache), kolejne zapytania są wielokrotnie szybsze. Dlatego na małych, pojedynczych zapytaniach wsadowych różnice są niewielkie, a przewaga Sparka rośnie tam, gdzie liczysz iteracyjnie i wielokrotnie na tych samych danych.

Pełne porównanie w jednej tabeli

Zbierzmy wszystko w jednym miejscu. Poniższa tabela zestawia oba narzędzia w dziewięciu wymiarach, które realnie decydują o wyborze.

Infografika-tabela porownujaca Apache Hive i Apache Spark w dziewieciu wymiarach: czym sa, glowny interfejs, model wykonania, dane miedzy krokami, latencja, strumienie i ML, zaleznosc od Hadoop, metadane, krzywa wejscia
Macierz cech Hive kontra Spark. Żaden nie jest lepszy w oderwaniu od zadania: Hive wygrywa prostotą tam, gdzie wystarczy SQL wsadowy, Spark - wszechstronnością tam, gdzie potrzebny jest jeden silnik do ETL, strumieni i uczenia maszynowego.

Kiedy Hive, kiedy Spark, a kiedy oba

Skoro znamy już różnice, decyzja robi się prosta. Co ważne, w praktyce najczęściej nie jest to wybór albo-albo.

Infografika w trzech kolumnach: kiedy wybrac Hive (zespol zna SQL, raporty wsadowe, dane w HDFS), kiedy Spark (potoki ETL, strumienie, ML, iteracje), a kiedy oba (wspolny Metastore, Spark SQL na tabelach Hive)
Prosta decyzja w trzech kolumnach. Hive dla wsadowego SQL i prostoty, Spark dla wszechstronności i iteracji, a bardzo często - oba naraz, bo świetnie się uzupełniają.

Wybierz Hive, gdy zespół zna SQL, robicie wsadowe raporty z hurtowni, a dane leżą już w HDFS. Wybierz Spark, gdy budujesz wielokrokowe potoki, potrzebujesz strumieni lub uczenia maszynowego albo wracasz do tych samych danych. A jeśli rozważasz rozwiązanie w chmurze zamiast własnego klastra, warto poznać też w pełni zarządzaną hurtownię, jaką jest Google BigQuery - to trzecia droga obok Hive i Sparka.

Spark i Hive potrafią pracować razem

Najczęstszym nieporozumieniem jest traktowanie tego jak pojedynku. W dojrzałej architekturze danych Hive i Spark współpracują: Hive (a właściwie jego Metastore) pełni rolę wspólnego katalogu tabel, a Spark jest silnikiem, który te tabele liczy.

Infografika interoperacyjnosci: wspolny Hive Metastore, Spark SQL czytajacy tabele Hive, Hive uzywajacy Sparka jako silnika, oraz typowy uklad w firmie - HDFS, Metastore, analitycy w SQL, inzynierowie w Spark
Hive i Spark w jednej architekturze. Ten sam Metastore opisuje pliki jako tabele, analitycy pytają je w SQL, a inżynierowie budują potoki w Spark na tych samych danych. Nikt niczego nie przepisuje.

W typowej firmie wygląda to tak: pliki leżą w HDFS lub w chmurze, Hive Metastore opisuje je jako tabele, analitycy odpytują je w SQL, a inżynierowie budują potoki i modele w Spark - na tych samych tabelach. Spark potrafi uruchomić spark.sql(...) wprost na tabelach zdefiniowanych w Hive, więc migrację można robić stopniowo, bez rewolucji.

Jak uruchomić oba u siebie

Najlepszy sposób, żeby to wszystko poczuć, to odpalić oba na własnym komputerze. Dokładnie tak przygotowaliśmy to demo - dwoma poleceniami Dockera. Najpierw Hive z serwerem zapytań i konsolą Beeline:

# Apache Hive: serwer zapytań w jednym kontenerze
docker run -d -p 10000:10000 -p 10002:10002 \
  --env SERVICE_NAME=hiveserver2 \
  --name hive apache/hive:4.0.1

# konsola Beeline (klient SQL)
docker exec -it hive beeline -u 'jdbc:hive2://localhost:10000/'

A obok Spark, który tę samą analizę policzy zadaniem spark-submit albo interaktywnie w powłoce PySpark:

# Apache Spark: uruchomienie zadania na tych samych danych
docker run --rm -v "$PWD:/work" \
  apache/spark:3.5.3 \
  /opt/spark/bin/spark-submit /work/analiza.py

# albo interaktywnie w powłoce PySpark
docker run --rm -it apache/spark:3.5.3 /opt/spark/bin/pyspark

Od tego momentu możesz ładować dane i pisać zapytania w obu - i na własne oczy porównać, jak każdy z nich dochodzi do tego samego wyniku.

Podsumowanie

Apache Hive i Apache Spark nie są konkurentami w prostym sensie. Hive to hurtownia danych z dostępem przez SQL - prosta, dojrzała, idealna do wsadowej analityki dla zespołów, które znają SQL. Spark to uniwersalny silnik obliczeniowy - liczy w pamięci, obsługuje SQL, DataFrame, strumienie i uczenie maszynowe, i nie potrzebuje Hadoopa. Na tych samych danych oba policzą identyczny wynik; różni je to, jak i jak szybko do niego dochodzą. Spark błyszczy przy iteracjach i złożonych potokach dzięki modelowi in-memory, Hive - prostotą i stabilnością w czystym SQL. A ponieważ Spark potrafi czytać tabele Hive przez wspólny Metastore, w praktyce najlepszą odpowiedzią bywa: użyj obu. Najlepsze jest to, że całość przećwiczysz dziś na własnym laptopie w dwóch kontenerach - a stąd już blisko do pracy z prawdziwym Big Data.

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR. Ma terminy gwarantowane.

★★★★★ Średnia ocena naszych szkoleń w Google: 5/5

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★ Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Czym Apache Spark różni się od Apache Hive?
Hive to hurtownia danych z dostępem przez SQL, zbudowana nad Hadoopem - tłumaczy zapytania SQL na zadania rozproszone i czyta pliki z HDFS. Spark to uniwersalny silnik obliczeniowy, który liczy dane w pamięci i obsługuje nie tylko SQL, ale też DataFrame API, strumienie i uczenie maszynowe. W skrócie: Hive myśli tabelami i SQL, Spark to ogólny silnik, który SQL ma jako jedną z wielu funkcji.
Czy Spark jest szybszy od Hive?
Zwykle tak, ale zależy od zadania. Spark trzyma dane między krokami w pamięci, więc przy wielokrokowych i iteracyjnych obliczeniach oraz przy powtarzanych odczytach (cache) bywa wielokrotnie szybszy. Przy pojedynczych, prostych zapytaniach wsadowych różnica z nowoczesnym Hive na silniku Tez potrafi być niewielka. Hive dokłada za to jednorazowy koszt startu sesji Tez przy pierwszym zapytaniu.
Czy Spark zastępuje Hive?
Nie musi. Spark i Hive często pracują razem: Hive Metastore pełni rolę wspólnego katalogu tabel, a Spark jest silnikiem, który te tabele liczy przez spark.sql. Analitycy mogą dalej używać Hive i SQL, a inżynierowie budować potoki w Spark na tych samych danych. To nie jest wybór albo-albo.
Czy Spark potrzebuje Hadoopa?
Nie. W przeciwieństwie do Hive, który stoi na Hadoopie (YARN i HDFS), Spark jest samodzielnym silnikiem. Może czytać dane z HDFS, ale równie dobrze z chmury (S3), zwykłych plików, baz danych czy Kafki, a zasobami może zarządzać YARN, Kubernetes albo jego własny menedżer.
Czy w Sparku muszę pisać kod, czy wystarczy SQL?
Wystarczy SQL. Spark SQL ma składnię bardzo zbliżoną do HiveQL, więc jeśli znasz SQL, możesz pisać zapytania dokładnie tak jak w Hive. Kiedy potrzebujesz więcej kontroli, sięgasz po DataFrame API w Pythonie, Scali czy Javie - ale to opcja, nie obowiązek.
Od czego zacząć naukę Spark i Hive?
Najprościej od Dockera. Hive uruchomisz jednym kontenerem apache/hive z konsolą Beeline, a Spark obrazem apache/spark przez spark-submit lub powłokę PySpark. Wystarczy jeden zbiór danych w CSV, żeby zadać to samo pytanie obu silnikom i zobaczyć różnice na własne oczy. Solidne podstawy SQL przydadzą się przy obu.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...