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

В чем разница между Apache Spark SQLContext и HiveContext?

В чем отличия между Apache Spark SQLContext и HiveContext?

Некоторые источники говорят, что, поскольку HiveContext является надмножеством разработчиков SQLContext, разработчикам всегда следует использовать HiveContext, который имеет больше возможностей, чем SQLContext. Но текущие API каждого контекста в основном такие же.

  • Каковы сценарии, которые лучше использовать SQLContext/HiveContext?
  • Является ли HiveContext более полезным только при работе с Hive?.
  • Или SQLContext - это все, что нужно для реализации приложения Big Data с использованием Apache Spark?
4b9b3361

Ответ 1

Spark 2.0 +

Spark 2.0 предоставляет встроенные функции окна (SPARK-8641) и содержит некоторые дополнительные улучшения в анализе и гораздо лучшую совместимость с SQL 2003, поэтому он значительно менее зависимый от улья для достижения основной функциональности, и из-за этого HiveContext (SparkSession с поддержкой Hive) кажется немного менее важным.

Spark & ​​lt; 2.0

Очевидно, что если вы хотите работать с Hive, вы должны использовать HiveContext. Кроме того, самая большая разница на данный момент (Spark 1.5) - это поддержка функций окна и возможность доступа к UUF Hive.

Вообще говоря, оконные функции - довольно крутая функция и могут быть использованы для решения довольно сложных задач в сжатом виде, не переходя между RDD и DataFrames. Производительность по-прежнему далека от оптимальной, особенно без предложения PARTITION BY, но на самом деле ничего особенного нет.

Что касается UUF Hive, это не является серьезной проблемой сейчас, но до Spark 1.5 многие функции SQL были выражены с использованием UDF Hive и требуется HiveContext для работы.

HiveContext также обеспечивает более надежный синтаксический анализатор SQL. См. Например: py4j.protocol.Py4JJavaError при выборе вложенного столбца в dataframe с использованием select statetment

Наконец, для запуска сервера Thrift требуется HiveContext.

Самая большая проблема с HiveContext заключается в том, что она поставляется с большими зависимостями.

Ответ 2

При программировании на Spark SQL у нас есть две точки входа в зависимости от нужна ли нам поддержка Hive. Рекомендуемой точкой входа является HiveContext для обеспечивают доступ к HiveQL и другим зависимым от Hive функциям. Более SQLContext предоставляет подмножество поддержки Spark SQL, которая не зависит от Улей.

- Разделение существует для пользователей, которые могут иметь конфликты с включением всех зависимости от улья.

-Доступные функции HiveContext, которые не найдены в SQLContext, включают возможность записи запросов с использованием более полного анализатора HiveQL, доступа к UUF Hive и возможности чтения данных из таблиц Hive.

-Использование HiveContext не требует установки Hive.

Ответ 3

HiveContext по-прежнему является надмножеством sqlcontext, он содержит определенные дополнительные свойства, такие как он может читать конфигурацию из hive-site.xml, в случае, если у вас есть использование улей, просто используйте sqlcontext