java spark samplebykey用法_Spark使用小结:Java版的GroupByKey示例

Spark Java版的GroupByKey示例

感觉reduceByKey只能完成一些满足交换率,结合律的运算,如果想把某些数据聚合到一些做一些操作,得换groupbykey

比如下面:我想把相同key对应的value收集到一起,完成一些运算(例如拼接字符串,或者去重)

public class SparkSample {

private static final Pattern SPACE = Pattern.compile(" ");

public static void main(String args[]) {

SparkConf sparkConf = new SparkConf();

sparkConf.setAppName("Spark_GroupByKey_Sample");

sparkConf.setMaster("local");

JavaSparkContext context = new JavaSparkContext(sparkConf);

List data = Arrays.asList(1,1,2,2,1);

JavaRDD distData= context.parallelize(data);

JavaPairRDD firstRDD = distData.mapToPair(new PairFunction() {

@Override

public Tuple2 call(Integer integer) throws Exception {

return new Tuple2(integer, integer*integer);

}

});

JavaPairRDD> secondRDD = firstRDD.groupByKey();

List> reslist = secondRDD.map(new Function>, Tuple2>() {

@Override

public Tuple2 call(Tuple2> integerIterableTuple2) throws Exception {

int key = integerIterableTuple2._1();

StringBuffer sb = new StringBuffer();

Iterable iter = integerIterableTuple2._2();

for (Integer integer : iter) {

sb.append(integer).append(" ");

}

return new Tuple2(key, sb.toString().trim());

}

}).collect();

for(Tuple2 str : reslist) {

System.out.println(str._1() + "\t" + str._2() );

}

context.stop();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值