如何基于密钥将java对RDD数据分发到RDD的不同分区 javarddinput=xyz.sc.textFile(“/home/spark/Documents/xyz”); JavaRDD infoRDD=input.mapToPair(新的 配对函数(){ 公共元组2调用(字符串x){ 返回新的Tuple2(x.substring(0,2),x); }}).groupByKey(12).平面地图(新) FlatMapFunction(){ 公共Iterable调用(Tuple2 t) 抛出异常{ 返回t._2(); } });

如何基于密钥将java对RDD数据分发到RDD的不同分区 javarddinput=xyz.sc.textFile(“/home/spark/Documents/xyz”); JavaRDD infoRDD=input.mapToPair(新的 配对函数(){ 公共元组2调用(字符串x){ 返回新的Tuple2(x.substring(0,2),x); }}).groupByKey(12).平面地图(新) FlatMapFunction(){ 公共Iterable调用(Tuple2 t) 抛出异常{ 返回t._2(); } });,java,apache-spark,rdd,hadoop-partitioning,Java,Apache Spark,Rdd,Hadoop Partitioning,上面是我的代码,我根据键将数据分发到不同的分区,但在某些分区中,两个不同键的数据被存储在一个分区中,与单个键相关的数据应该存储在单个分区中 期望 键1(数据)->partion1 键2(数据)->partion2 键3(数据)->partion3 JavaRDD<String> input = xyz.sc.textFile("/home/spark/Documents/XYZ"); JavaRDD<String> infoRDD = input.mapToPai

上面是我的代码,我根据键将数据分发到不同的分区,但在某些分区中,两个不同键的数据被存储在一个分区中,与单个键相关的数据应该存储在单个分区中

期望

键1(数据)->partion1
键2(数据)->partion2
键3(数据)->partion3

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();
    }
});