如何使用java格式化Join RDD的输出

时间:2016-10-04 21:32:23

标签: java join apache-spark

JavaPairRDD<String, Tuple2<Tuple2<String, Integer>, Double>> accountNew = 
        accountRecPair.join(accountCnt).join(accountSum);

( Key,   (value))
------------------------------
(12,(ID1,12,1062.0,2),68605.0))

我希望myoutput没有&#34;(&#34;和&#34;)&#34;

ID1,12,1062.0,2,68605.0

2 个答案:

答案 0 :(得分:0)

由于元组不是集合(它们更像是案例类),因此没有简单的方法来展平结构。您必须在每次连接后显式映射结果,以提取嵌套元组结构的数据,并将它们放在一个扁平的元组结构中。

答案 1 :(得分:0)

JavaRDD<String> outputFile = accountNew.map(
    new Function< Tuple2<String, Tuple2<Tuple2<String, Integer>, Double>>, String>() {

        public String call(
                Tuple2<String, Tuple2<Tuple2<String, Integer>, Double>> rec)
                 {
                    String orderRec ;
                  //  orderRec = rec._1 ;
                    Tuple2<Tuple2<String, Integer>, Double> rec1 = rec._2() ;
                    Tuple2<String, Integer> rec2 = rec1._1() ;

                    orderRec = rec2._1 + "," + rec2._2().toString() + "," + rec1._2().toString() ;

                    return orderRec;
                  }         
    }
) ;

以下是我对输出进行格式化的操作。

  

块引用