如何将基于密钥的java对RDD数据分发到RDD的不同分区

时间:2016-05-08 17:17:26

标签: java apache-spark rdd hadoop-partitioning

JavaRDD<String> input = xyz.sc.textFile("/home/spark/Documents/XYZ");    
JavaRDD<String> infoRDD = input.mapToPair(new 
    PairFunction<String,String,String>(){
       public Tuple2<String, String> call(String x) {
           return new Tuple2<String, String>(x.substring(0, 2), x);
    }}).groupByKey(12).flatMap(new 
FlatMapFunction<Tuple2<String,Iterable<String>>, String>() {
    public Iterable<String> call(Tuple2<String, Iterable<String>> t) 
    throws Exception {
        return t._2();
    }
});

上面是我的代码,我将基于密钥的数据分发到不同的分区,但是在一些分区中,两个不同密钥的数据被存储在预期与单个密钥相关的数据应存储在单个分区上的位置。

预期

  

key1(data) - &gt; partion1
  key2(data) - &gt; partion2
  key3(data) - &gt; partion3

0 个答案:

没有答案