¿Cuál es la diferencia entre Apache Spark SQLContext y HiveContext?


¿Cuáles son las diferencias entre Apache Spark SQLContext y HiveContext ?

Algunas fuentes dicen que dado que HiveContext es un superconjunto de desarrolladores de SQLContext siempre deben usar HiveContext que tiene más características que SQLContext. Pero las API actuales de cada contexto son en su mayoría las mismas.

  • ¿Cuáles son los escenarios que SQLContext/HiveContext es más útil ?.
  • ¿HiveContext es más útil solo cuando se trabaja con Hive ?.
  • O el SQLContext es todo lo que necesita en la implementación de una aplicación de Big Data utilizando Apache Spark ?
Author: tlarevo, 2015-11-12

3 answers

Chispa 2.0+

Spark 2.0 proporciona funciones de ventana nativas ( SPARK-8641 ) y cuenta con algunas mejoras adicionales en el análisis y mucho mejor cumplimiento de SQL 2003 por lo que es significativamente menos dependiente de Hive para lograr la funcionalidad del núcleo y debido a eso HiveContext (SparkSession con soporte de Colmena) parece ser un poco menos importante.

Chispa

Obviamente si quieres trabajar con Hive tienes que usar HiveContext. Más allá de eso el más grande la diferencia por ahora (Spark 1.5) es un soporte para funciones de ventana y la capacidad de acceder a UDFs de Hive.

En términos generales, las funciones de ventana son una característica bastante interesante y se pueden usar para resolver problemas bastante complejos de una manera concisa sin ir y venir entre RDDs y DataFrames. El rendimiento aún está lejos de ser óptimo, especialmente sin la cláusula PARTITION BY, pero en realidad no es nada específico de Spark.

Con respecto a Hive UDFs no es un problema serio ahora, pero antes Spark 1.5 muchas funciones SQL se han expresado usando UDFs de Hive y requieren HiveContext para funcionar.

HiveContext también proporciona un analizador SQL más robusto. Vea por ejemplo: py4j. protocol. Py4JJavaError al seleccionar la columna anidada en el dataframe usando select statetment

Finalmente se requiere HiveContext para iniciar Thrift server.

El mayor problema con HiveContext es que viene con grandes dependencias.

 34
Author: zero323,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:45

Al programar contra Spark SQL tenemos dos puntos de entrada dependiendo de si necesitamos el apoyo de la colmena. El punto de entrada recomendado es el HiveContext para proporcione acceso a HiveQL y otras funcionalidades dependientes de Hive. El más básico SQLContext proporciona un subconjunto de la compatibilidad con Spark SQL que no depende de Colmena.

- La separación existe para los usuarios que podrían tener conflictos con la inclusión de todos las dependencias de la colmena.

- Características adicionales de HiveContext que no son en SQLContext se encuentra la capacidad de escribir consultas utilizando el analizador HiveQL más completo, el acceso a UDFs de Hive y la capacidad de leer datos de tablas de Hive.

-El uso de un HiveContext no requiere una configuración de Hive existente.

 3
Author: sdinesh94,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-27 21:07:43

HiveContext sigue siendo el superconjunto de sqlcontext,contiene ciertas propiedades adicionales como puede leer la configuración de hive-site.xml,en caso de que tenga hive use de lo contrario, simplemente use sqlcontext

 3
Author: anubhav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-02 11:01:49