SparkSQL CLI внутренне использует HiveQL, и в случае Hive on spark (HIVE-7292), уль использует искру в качестве внутреннего двигателя. Может ли кто-нибудь залить немного света, как именно эти два сценария отличаются друг от друга, а также плюсы и минусы обоих подходов?
SparkSQL против Hive на Spark - Разница и плюсы и минусы?
Ответ 1
-
Когда SparkSQL использует куст
SparkSQL может использовать HiveMetastore для получения метаданных данных, хранящихся в HDFS. Эти метаданные позволяют SparkSQL лучше оптимизировать выполняемые им запросы. Здесь Spark - это процессор запросов.
-
Когда Hive использует Spark См. запись JIRA: HIVE-7292
Здесь данные доступны через искру. А Hive - это процессор запросов. Таким образом, у нас есть все достоинства Spark Core, чтобы воспользоваться преимуществами. Но это значительное улучшение для улья и по-прежнему "продолжается" по состоянию на 2 февраля 2016 года.
-
Существует третий вариант обработки данных с помощью SparkSQL
Используйте SparkSQL без использования Hive. Здесь SparkSQL не имеет доступа к метаданным из Hast Metastore. И запросы выполняются медленнее. Я провел несколько тестов производительности, сравнивая варианты 1 и 3. Результаты здесь.
Ответ 2
SparkSQL vs Spark API вы можете себе представить, что вы находитесь в мире РСУБД:
SparkSQL - это чистый SQL, а Spark API - это язык для записи хранимой процедуры
Hive on Spark похож на SparkSQL, это чистый интерфейс SQL, который использует искру в качестве механизма выполнения, SparkSQL использует синтаксис Hive, так как язык, я бы сказал, что они почти одинаковы.
но у Hive on Spark есть гораздо лучшая поддержка возможностей hive, особенно hiveserver2 и функций безопасности, функции hive в SparkSQL на самом деле багги, в SparkSQL есть hiveserver2 impl, но в последней версии (1.6.x), hiveserver2 в SparkSQL больше не работает с аргументами hivevar и hiveconf, и имя пользователя для входа через jdbc тоже не работает...
см. https://issues.apache.org/jira/browse/SPARK-13983
Я считаю, что поддержка улья в искровом проекте действительно очень низкоприоритетная...
К сожалению, увлечение интеграцией искры не так просто, есть много конфликтов зависимостей... таких как https://issues.apache.org/jira/browse/HIVE-13301
и, когда я пытаюсь улей с интеграцией искры, для цели отладки, я всегда начинаю hive cli следующим образом:
export HADOOP_USER_CLASSPATH_FIRST=true
bin/hive --hiveconf hive.root.logger=DEBUG,console
наше требование использует искру с hiveserver2 безопасным способом (с проверкой подлинности и авторизацией), в настоящее время SparkSQL самостоятельно не может этого обеспечить, мы используем ranger/sentry + Hive on Spark.
надеюсь, что это поможет вам лучше понять, в каком направлении вы должны идти.
Ответ 3
Откажитесь от blog от Databricks. Хотя и не слишком подробно, речь идет об истории, стоящей за ней, и о том, когда использовать что.
Ответ 4
вот ответ, который я нашел на официальном сайте куста:
1.3 Сравнение с акулой и Спарк SQL
Есть два взаимосвязанных проектов в Спарк экосистеме, которые обеспечивают поддержку Hive QL на Спарк: акулы и Спарк SQL.
● Проект Акулы переводит планы запросов, генерируемых улья в его собственном представлении и выполняет их на Спарк.
● Спарк SQL является функция в Спарк. Он использует ульи анализатор в качестве оболочки, чтобы обеспечить поддержку Hive QL. Разработчики приложений Спарк могут легко выразить свою логику обработки данных в SQL, а также других операторов Спарк, в их коде. Спарк SQL поддерживает различный случай использования, чем улей.
По сравнению с акулой и Спарк SQL, наш подход дизайном поддерживает все существующие функции Hive, включая улое QL (и любое будущее расширение), а также интеграции ульев с разрешением, контролем, аудитом и других операционных инструментами.
3. Улей-Level Design Как отмечалось во введении, этот проект требует другого подхода, что акулы или искрового SQL в том смысле, что мы не будем реализовывать семантику SQL, используя примитивы искру в. Наоборот, мы реализуем его с помощью MapReduce примитивов. Единственная новая вещь здесь является то, что эти MapReduce примитивы будут выполняться в Спарк. На самом деле, лишь немногие из примитивов искру будет использоваться в этой конструкции.
Подход к выполнению Ульи MapReduce примитивы на искру, которая отличается от того, что акулы или Спарк SQL делает имеет следующие прямые преимущества:
1.Spark пользователей будут автоматически получать весь набор ульев богатых возможностей, включая любые новые функции, которые улей могут ввести в будущем.
2.Это подход позволяет избежать или уменьшить необходимость любой настройки работы крапивница Спарк исполнения двигателя.
3.It также ограничивает объем проекта и уменьшить содержание долговременную, сохраняя Улей-на-Спарк конгруэнтны улей MapReduce и Tez.