如何使用JavaRDD对列进行分组

时间:2018-04-23 18:57:20

标签: java apache-spark bigdata

我已导入文本文件,其中包含以下值名称,年龄,资格,性别,薪水等多行到JavaRDD<String>

我如何计算男性和女性的数量?

  • 示例
  • 男10
  • 女14

我应该将列性发送到另一个JavaRDD<String>,还是可以应用JavaPairRDD<String,Integer> ? 不使用数据帧

我试过这个

JavaRDD<String> getdata = sc.textfile("gettext.data");

JavaPairRdd<String,Integer> pairgroup = getdata.mapToPair(new PairFunction<String, String, Integer>() {

@Override
public Tuple2<String, Integer> call(String arg0) throws Exception {

        String[]  aRow= arg0.toString().split(",");
        String Sex = aRow[3];

    return new Tuple2<String, Integer>(Sex, 1);
}
}).reduceByKey(new Function2<Integer, Integer, Integer>() {

@Override
public Integer call(Integer v1, Integer v2) throws Exception {
    return v1 + v2;
}
}).foreach(new VoidFunction<Tuple2<String, Integer>>() {

@Override
public void call(Tuple2<String, Integer> t) throws Exception {
    System.out.println(t._1 + " " + t._2);

}
});

0 个答案:

没有答案