2016-04-16 10 views

Antwort

2

Sie können die Fensterfunktionsfunktion verwenden, die in Spark 1.4 hinzugefügt wurde. Angenommen, wir haben eine productRevenue-Tabelle, wie unten gezeigt. enter image description here

die Antwort auf Was sind die meistverkauften und die zweite meistverkauften Produkte in jeder Kategorie als

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 

Tis geben Ihnen Dies funktioniert gut

+0

folgt, ist das gewünschte Ergebnis in Scala. Als SQL-Strings schlägt dies jedoch mit einem seltsamen Fehler fehl, wie hier beschrieben https://gist.github.com/geoHeil/3dff11860ae042792cea6970447c4592 failure: '' union '' erwartet aber '('gefunden –

+2

Lösung ist: http://stackoverflow.com/questions/31786912/spark-failure-union-erwartet-aber-gefunden –