2016-09-03 3 views
0

Ich habe folgend RDDWie RDDs zum Filtern

val reducedListOfCalls: RDD[(String, List[Row])] 

Die RDDs sind:

[(923066800846, List[2016072211,1,923066800846])] 

[(923027659472, List[2016072211,1,92328880275]), 
    923027659472, List[2016072211,1,92324440275])] 

[(923027659475, List[2016072211,1,92328880275]), 
(923027659475, List[2016072211,1,92324430275]), 
(923027659475, List[2016072211,1,92334340275])] 

Wie oben zuerst RDD gezeigt hat 1 (Schlüssel, Wert) -Paar , Sekunde hat 2, und Drittel hat 3 Paare.

Ich möchte alle RDDs entfernen, die weniger als 2 Schlüssel/Wert-Paare haben. Das RDD Ergebnis erwarten:

[(923027659472, List[2016072211,1,92328880275]), 
    923027659472, List[2016072211,1,92324440275])] 

[(923027659475, List[2016072211,1,92328880275]), 
(923027659475, List[2016072211,1,92324430275]), 
(923027659475, List[2016072211,1,92334340275])] 

Ich habe versucht, die folgenden:

val reducedListOfCalls = listOfMappedCalls.filter(f => f._1.size >1) 

aber immer noch die ursprüngliche Liste nur gegeben. Der Filter scheint keinen Unterschied gemacht zu haben.

Ist es möglich, die Anzahl der Schlüssel in einer zugeordneten RDD zu zählen und dann basierend auf der Anzahl der Schlüssel zu filtern?

+0

In Ihrem Beispiel haben Sie List angezeigt, die gleiche Elemente für identische Schlüssel enthält. Hast du reduebykey ausprobiert? –

+0

Die Schlüssel sind die gleichen, aber die Werte sind unterschiedlich, wie Sie sehen können. Ich brauche alle Werte, wenn die Anzahl der Schlüssel> 1, ReduceByKey für diese – sparkDabbler

+0

nicht funktioniert Sind das alle Drucke der gleichen RDD? Es sieht nicht so aus, als wäre deine 'List [Row]' diejenige, die diese multiplen Tupel enthält, es sieht so aus, als ob die RDD einfach eine andere Anzahl von Tupeln enthält. –

Antwort

1

Sie können aggregateByKey in Spark verwenden, um die Anzahl der Schlüssel zu zählen.

Sie sollten eine Tuple2(count, List[List[Row]]) in Ihrer Mähdrescherfunktion erstellen. Dasselbe kann durch reduceByKey erreicht werden.

Lesen this nach dem Vergleich dieser beiden Funktionen.