Spark consultas SQL vs funciones de trama de datos
performance apache-spark (3)
Al usar DataFrame, uno puede dividir el SQL en múltiples declaraciones / consultas, lo que ayuda en la depuración, mejoras fáciles y mantenimiento de código.
Romper consultas SQL complejas en consultas más simples y asignar el resultado a un DF proporciona una mejor comprensión.
Al dividir la consulta en múltiples DF, el desarrollador obtiene la ventaja de usar caché, reparación (para distribuir datos de manera uniforme en las particiones usando una clave única / cercana a única).
Para realizar un buen rendimiento con Spark.
Me pregunto si es bueno usar consultas sql a través de
SQLContext
o si es mejor hacer consultas a través de funciones
df.select()
como
df.select()
.
¿Alguna idea? :)
Idealmente, el catalizador de Spark debería optimizar ambas llamadas al mismo plan de ejecución y el rendimiento debería ser el mismo. Cómo llamar es solo cuestión de tu estilo. En realidad, hay una diferencia según el informe de Hortonworks ( https://community.hortonworks.com/articles/42027/rdd-vs-dataframe-vs-sparksql.html ), donde SQL supera a Dataframes para un caso cuando necesitan registros AGRUPADOS con sus CONDES totales que descienden por nombre de registro.
No hay diferencia de rendimiento en absoluto. Ambos métodos usan exactamente el mismo motor de ejecución y estructuras de datos internas. Al final del día, todo se reduce a las preferencias personales.
-
Podría
DataFrame
consultas deDataFrame
son mucho más fáciles de construir mediante programación y proporcionan una seguridad de tipo mínima. -
Las consultas SQL simples pueden ser significativamente más concisas y más fáciles de entender. También son portátiles y se pueden usar sin modificaciones con todos los idiomas admitidos. Con
HiveContext
estos también se pueden usar para exponer algunas funcionalidades que pueden ser inaccesibles de otras maneras (por ejemplo, UDF sin Spark wrappers).