В чем разница между Apache Spark SQLContext и HiveContext?
В чем отличия между Apache Spark SQLContext и HiveContext?
Некоторые источники говорят, что, поскольку HiveContext является надмножеством разработчиков SQLContext, разработчикам всегда следует использовать HiveContext, который имеет больше возможностей, чем SQLContext. Но текущие API каждого контекста в основном такие же.
- Каковы сценарии, которые лучше использовать SQLContext/HiveContext?
- Является ли HiveContext более полезным только при работе с Hive?.
- Или SQLContext - это все, что нужно для реализации приложения Big Data с использованием Apache Spark?
Ответы
Ответ 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