apache-spark group-by apache-spark-sql top-n

apache spark - Spark sql top n por grupo



apache-spark group-by (1)

Puede usar la función de función de ventana que se agregó en Spark 1.4 Suponga que tenemos una tabla de Ingresos de producto como se muestra a continuación.

La respuesta a ¿Cuáles son los productos más vendidos y los segundos productos más vendidos en cada categoría es la siguiente

SELECT product,category,revenue FROM (SELECT product,category,revenue,dense_rank() OVER (PARTITION BY category ORDER BY revenue DESC) as rank FROM productRevenue) tmp WHERE rank <= 2

Esto te dará el resultado deseado

¿Cómo puedo obtener el top-n (digamos top 10 o top 3) por grupo en spark-sql ?

http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/ proporciona un tutorial para SQL general. Sin embargo, spark no implementa subconsultas en la cláusula where.