zapłonowe 2.0+
Spark 2.0 zapewnia natywne funkcje szyb (SPARK-8641) i zawiera kilka dodatkowych ulepszeń w parsowanie i znacznie lepszą zgodność SQL 2003, więc jest znacznie mniej zależne od Hive, aby osiągnąć podstawowy Funkcjonalność i z tego powodu HiveContext
(SparkSession
z obsługą Hive) wydaje się być nieco mniej ważne.
Spark < 2,0
Oczywiście jeśli chcesz pracować z Hive trzeba użyć HiveContext
. Poza tym największą różnicą jak na razie (Spark 1.5) jest wsparcie dla window functions i możliwość dostępu do UDF Ula.
ogólnie mówiąc funkcji okna są całkiem fajne cecha i mogą być wykorzystane do rozwiązywania bardzo złożonych problemów w zwięzły sposób, bez wchodzenia w tę iz powrotem między RDD i DataFrames. Wydajność wciąż jest daleka od optymalnej, zwłaszcza bez klauzuli PARTITION BY
, ale to naprawdę nic nie jest specyficzne dla Sparka.
Jeśli chodzi o UDF UM, nie jest to teraz poważny problem, ale przed Spark 1.5 wiele funkcji SQL zostało wyrażonych za pomocą UDF UM i wymaga od pracy HiveContext
.
HiveContext
zapewnia również bardziej niezawodny analizator składni SQL. Zobacz na przykład: py4j.protocol.Py4JJavaError when selecting nested column in dataframe using select statetment
Na koniec wymagane jest uruchomienie HiveContext
w celu uruchomienia serwera Thrift.
Największy problem z HiveContext
polega na tym, że jest wyposażony w duże zależności.
Z Twojego komentarza, wydaje Jedynym minusem HiveContext są duże zależności. Poza tym, jest to bezpieczny zakład, aby zawsze używać HiveContext zamiast SqlContext. Używam środowiska SparkR 1.6. –
From https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-sql-SparkSession.html "SparkSession połączył SQLContext i HiveContext w jednym obiekcie w Spark 2.0." –