我是新來的火花和嘗試學習。這是一個相當簡單的問題,我有下面的代碼來減少重複鍵w.r.t到他們的值。如何在Apache Spark中執行簡單的reduceByKey?
數據幀都會有這樣的價值觀。
subject object
node1 node5
node1 node6
node1 node7
node2 node5
node2 node7
而且我希望他們能像這樣減少。
subject object
node1 [node5,node6,node7]
node2 [node5,node7]
我能實現這個使用groupByKey
方法,但我想在這裏使用reduceByKey
對此我無法理解什麼是執行這一正確的語法。
這裏是我的代碼:
DataFrame records = Service.sqlCtx().sql("SELECT subject,object FROM Graph");
JavaPairRDD<String,Iterable<String>> rows = records.select("subject","object").toJavaRDD().mapToPair(
new PairFunction<Row,String,String>(){
@Override
public Tuple2<String, String> call(Row row) throws Exception {
return new Tuple2<String, String>(row.getString(0), row.getString(1));
}
// this can be optimized if we use reduceByKey instead of groupByKey
}).distinct().groupByKey().cache();