2015-04-16 45 views
0

我試圖連接兩個pairRDDs如下秀而火花的Java:顯示加入RDD

LAT1:K,V - > K-整數,V-雙 LAT2:K,V - > K-整數,V-雙

JavaPairRDD<Integer,Tuple2<Double,Double>> latlong = lat.join(long); 

我假設新RDD將是K,[V1,V2],我想展示新RDD

並且如果我想基於價值做業務,什麼方式來執行

請建議在火花的Java API

PS:我見過很多答案都在Scala中,但我的要求是用Java

回答

2

實現從星火文檔:

當聯接呼籲的數據集類型(K,V)和(K,W)返回每個鍵的所有元素對的(K,(V,W))對的數據集。

那麼,你是正確的這一假設:

JavaPairRDD<Integer,Tuple2<Double,Double>> latlong = lat.join(long); 

當你需要在JavaPairRDD與價值的工作,你可以使用#mapValues()方法:

傳中鍵 - 每個值值對RDD通過地圖功能而不改變按鍵;這也保留了原始RDD的分區。

要顯示JavaPairRDD,您可以使用與通常相同的輸出方法e。 G。 #saveAsTextFile()


當你需要在(K, (V, W))值映射到別的東西像(K,V-W)可以用提到mapValues()轉型:

JavaPairRDD<Integer, String> pairs = latlong.mapValues(
     new Function<Tuple2<Double, Double>, String>() { 
      @Override 
      public String call(Tuple2<Double, Double> value) throws Exception { 
      return value._1() + "-" + value._2(); 
      } 
     }); 
+0

你可以建議如何改造(K(V,W))變成(K,VW)? – swagath001

+0

我編輯了我的帖子並添加了一個'mapValues()'用法的例子。 – vanekjar