2016-05-23 9 views
-2

jetzt habe ich eine RDD, die die Datensätze in der RDD sind wie folgt:wie man den Funken rdd durch den Schlüssel unterscheidet?

key1 value1 
key1 value2 
key2 value3 
key3 value4 
key3 value5 

ich die RDD Datensätze erhalten möchten, die verschiedene Schlüssel haben, wie folgt:

key1 value1 
key2 value3 
key3 value4 

ich kann Verwenden Sie einfach die Spark-Core-APIs und aggregieren Sie keine Werte desselben Schlüssels.

Antwort

2

Sie können dies tun, mit PairRDDFunctions.reduceByKey. Angenommen, Sie haben eine RDD[(K, V)]:

rdd.reduceByKey((a, b) => if (someCondition) a else b) 
+0

danke, es funktioniert. –

1

Mit Datenrahmen und collect_set:

sqlContext.createDataFrame(rdd).toDF("k", "v") 
    .groupBy("k") 
    .agg(collect_set(col("v"))) 
+0

danke aber hier kann ich nicht den sqlContext verwenden. Ich kann einfach die APIs im Spark-Core verwenden. –

+0

@CaizhengLiu in diesem Fall dann würde ich Ihnen empfehlen, Ihre Frage zu bearbeiten und fügen Sie alle Einschränkungen und Details würde helfen, sie zu beantworten. – Wtower

+0

@Wtower, danke, ich bin ein neuerer hier. –

Verwandte Themen