sql performance apache-spark dataframe apache-spark-sql

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 de DataFrame 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).