Apache spark Spark sql每组前n名

Apache spark Spark sql每组前n名,apache-spark,group-by,apache-spark-sql,top-n,Apache Spark,Group By,Apache Spark Sql,Top N,如何获得spark sql中每组前n名(比如前10名或前3名) 提供有关常规SQL的教程。但是,spark不在where子句中实现子查询。您可以使用spark 1.4中添加的窗口功能 假设我们有一个productRevenue表,如下所示。 以下是每个类别中最畅销和第二畅销产品的答案 SELECT product,category,revenue FROM (SELECT product,category,revenue,dense_rank() OVER (PAR

如何获得spark sql中每组前n名(比如前10名或前3名)


提供有关常规SQL的教程。但是,spark不在where子句中实现子查询。

您可以使用spark 1.4中添加的窗口功能 假设我们有一个productRevenue表,如下所示。

以下是每个类别中最畅销和第二畅销产品的答案

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

这将为您提供所需的结果

这在scala中非常有效。但是,作为SQL字符串,此操作失败,并出现如下所述的奇怪错误失败:“`union expected but`` foundSolution是: