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.