read - ¿Cuál es la diferencia entre Apache Spark SQLContext y HiveContext?
spark sql example (3)
Al programar contra Spark SQL, tenemos dos puntos de entrada dependiendo de si necesitamos compatibilidad con Hive. El punto de entrada recomendado es HiveContext para proporcionar acceso a HiveQL y otras funciones dependientes de Hive. El SQLContext más básico proporciona un subconjunto del soporte de Spark SQL que no depende de Hive.
-La separación existe para usuarios que pueden tener conflictos al incluir todas las dependencias de Hive.
-Las características adicionales de HiveContext que no se encuentran en SQLContext incluyen la capacidad de escribir consultas utilizando el analizador HiveQL más completo, el acceso a UDF de Hive y la capacidad de leer datos de las tablas de Hive.
-Usar un HiveContext no requiere una configuración de Hive existente.
¿Cuáles son las diferencias entre Apache Spark SQLContext y HiveContext?
Algunas fuentes dicen que, dado que HiveContext es un superconjunto de SQLContext, los desarrolladores siempre deben usar HiveContext, que tiene más funciones que SQLContext. Pero las API actuales de cada contexto son en su mayoría las mismas.
- ¿Cuáles son los escenarios en los 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 para implementar una aplicación Big Data usando Apache Spark?
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 uso de la colmena, de lo contrario, simplemente use sqlcontext
Spark 2.0+
Spark 2.0 proporciona funciones de ventana nativas (
SPARK-8641
) y presenta algunas mejoras adicionales en el análisis y un cumplimiento mucho mejor de SQL 2003, por lo que es significativamente menos dependiente de Hive para lograr la funcionalidad central y debido a que
HiveContext
(
SparkSession
con soporte de Hive) parece ser Un poco menos importante.
Chispa <2.0
Obviamente, si desea trabajar con Hive, debe usar
HiveContext
.
Más allá de eso, la mayor diferencia hasta ahora (Spark 1.5) es un soporte para
funciones de ventana
y la capacidad de acceder a UDF de Hive.
En general, las funciones de ventana son una característica bastante interesante y se pueden usar para resolver problemas bastante complejos de manera concisa sin tener que ir y venir entre RDD 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 los UDF de Hive, ahora no es un problema grave, pero antes de Spark 1.5, muchas funciones de SQL se habían expresado utilizando UDF de Hive y requerían que
HiveContext
funcionara.
HiveContext
también proporciona un analizador SQL más robusto.
Consulte, por ejemplo:
py4j.protocol.Py4JJavaError al seleccionar una columna anidada en el marco de datos utilizando la declaración select
Finalmente se requiere
HiveContext
para iniciar el servidor Thrift.
El mayor problema con
HiveContext
es que viene con grandes dependencias.