2015-07-24 20 views

Odpowiedz

5

Sprawdź to blog od Databricks. Chociaż nie jest to zbyt szczegółowe, mówi o historii, która za tym stoi i kiedy należy z niej skorzystać.

11
  1. Kiedy SparkSQL wykorzystuje ula

    SparkSQL mogą korzystać HiveMetastore uzyskać metadane danych przechowywanych w HDFS. Te metadane umożliwiają SparkSQL lepszą optymalizację zapytań, które wykonuje. Tutaj Spark jest procesorem zapytań.

  2. Kiedy Hive używa Spark See the JIRA entry: HIVE-7292

    Tutaj dane są dostępne za pośrednictwem iskry. A Hive to procesor zapytań. Mamy więc wszystkie zalety Spark Core, które wykorzystują. Ale jest to istotna poprawa w Ulu i jest nadal „w toku”, jak od 2 lutego 2016 r

  3. Jest jeszcze trzecia opcja do przetwarzania danych z SparkSQL

    Zastosowanie SparkSQL bez użycia gałąź. Tutaj SparkSQL nie ma dostępu do metadanych z Hive Metastore. A zapytania działają wolniej. Zrobiłem kilka testów wydajności porównujących opcje 1 i 3. Wyniki są here.

+0

W trzeciej opcji, jeśli SparkSQL nie używa metastore ula (domyślnie jest to derby lub może być mysql), to czy musimy skonfigurować metastore dla SparkSQL, tak jak robimy to dla Hive? –

+1

Nie trzeba konfigurować metastore dla SparkSQL. SparkSQL może być używany na wiele sposobów. Ale w tej opcji konfiguracja metastore nie jest wymagana. Nawet bez skonfigurowania połączenia Hive Metastore, możemy użyć klasy HiveContext z klasy sparksql-cli. Inny sposób spojrzenia na tę koncepcję: SparkSQL może korzystać z innych źródeł danych, takich jak pliki CSV, w których koncepcja Metastore nie jest istotna. – prajod

+0

Jeśli metastore nie jest wymagany, to w jaki sposób program Spark SQL monitoruje metadane tabel. Musi gdzieś przechowywać te informacje. Jeśli potrzebuje pomocy HiveContext, oznacza to, że nadal polega na metastorze Hive. –

8

SparkSQL vs Spark API można po prostu wyobrazić jesteś w RDBMS świata:

SparkSQL jest czysty SQL i Spark API jest język do pisania procedury przechowywanej

Hive na Spark jest podobna do SparkSQL jest to czysty interfejs SQL, który używa iskry jako silnika wykonawczego, SparkSQL używa składni Hive, więc jako język, powiedziałbym, że są prawie takie same.

ale Hive na Sparku ma znacznie lepsze wsparcie dla funkcji ula, szczególnie hiveserver2 i funkcji bezpieczeństwa, funkcje rive w SparkSQL są naprawdę błędne, istnieje hiveserver2 impl w SparkSQL, ale w najnowszej wersji (1.6.x), hiveserver2 w SparkSQL nie działa z hivevar i argumentów hiveconf już, a nazwa użytkownika do logowania poprzez JDBC nie działa albo ...

zobaczyć https://issues.apache.org/jira/browse/SPARK-13983

wierzę ula wsparcie w projekcie zapłonowej jest naprawdę bardzo niska priorytetowe rzeczy ...

smutnie ula na iskrze integratio n nie jest to takie proste, istnieje wiele konfliktów zależności ... takich jak https://issues.apache.org/jira/browse/HIVE-13301

, a gdy próbuję ula z integracją iskrowym, dla celów debugowania, wciąż zaczynam ula CLI jak to:

export HADOOP_USER_CLASSPATH_FIRST=true 
bin/hive --hiveconf hive.root.logger=DEBUG,console 

naszym wymogiem jest użycie iskry z hiveserver2 w bezpieczny sposób (z uwierzytelnianiem i autoryzacją), obecnie SparkSQL sam nie może zapewnić tego, używamy ranger/sentry + gałąź Spark.

mam nadzieję, że pomoże ci to uzyskać lepszy pomysł, w którą stronę powinieneś pójść.

+0

dzięki! bardzo doceniane. –

0

tutaj jest związane odpowiedź mi się znaleźć w oficjalnej stronie ula:
1.3 Porównanie z Shark i Spark SQL Istnieją dwa powiązane projekty w ekosystemie Spark, które zapewniają wsparcie Hive QL na Spark Spark: Shark i SQL. ● Projekt Shark tłumaczy plany kwerend generowane przez Hive na własne reprezentacje i wykonuje je na Spark. ● Spark SQL jest funkcją w Spark. Używa on parsera Hive jako interfejsu, aby zapewnić obsługę Hive QL. Twórcy aplikacji Spark mogą z łatwością wyrazić swoją logikę przetwarzania danych w SQL, a także innych operatorów Spark w swoim kodzie. Spark SQL obsługuje inny przypadek użycia niż Hive.

W porównaniu z Shark i Spark SQL, nasze podejście projektowe obsługuje wszystkie istniejące funkcje Hive, w tym Hive QL (i wszelkie przyszłe rozszerzenia) oraz integrację Hive z autoryzacją, monitorowaniem, audytowaniem i innymi narzędziami operacyjnymi.

3. Projekt poziomu-ula Jak wspomniano we wstępie, projekt ten różni się od podejścia opisanego przez Shark lub Spark SQL w tym sensie, że nie zamierzamy implementować semantyki SQL za pomocą prymitywów Sparka. Wręcz przeciwnie, zaimplementujemy go za pomocą prymitywów MapReduce. Jedyną nowością jest to, że prymitywy MapReduce zostaną wykonane w Sparku. W rzeczywistości tylko kilka prymitywów Sparka zostanie wykorzystanych w tym projekcie.

Podejście polegające na wykonywaniu prymitywów MapReduce firmy Hive na urządzeniu Spark, które różni się od tego, które wykonuje Shark lub Spark SQL, ma następujące bezpośrednie zalety: 1. Użytkownicy będą automatycznie otrzymywać cały zestaw bogatych funkcji gałęzi, w tym wszelkie nowe funkcje, które Hive może wprowadzić w przyszłości. 2. Takie podejście pozwala uniknąć lub zmniejsza konieczność jakichkolwiek prac dostosowawczych w silniku wykonawczym Hive'a Sparka.
3. Ograniczą także zakres projektu i zmniejszą długoterminową konserwację, utrzymując zgodność Hive-on-Spark z Hive MapReduce i Tez.