Подтвердить что ты не робот

SparkSQL против Hive на Spark - Разница и плюсы и минусы?

SparkSQL CLI внутренне использует HiveQL, и в случае Hive on spark (HIVE-7292), уль использует искру в качестве внутреннего двигателя. Может ли кто-нибудь залить немного света, как именно эти два сценария отличаются друг от друга, а также плюсы и минусы обоих подходов?

4b9b3361

Ответ 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.