spark Java map算子和maptopair算子的使用

本文介绍了Spark Java中map算子的使用,它会将函数应用于RDD的每个元素,产生一对一的结果。示例代码展示了map操作的具体应用。接着,文章讨论了mapToPair算子,该算子用于进行数据类型的转换,特别是将输入转换为Tuple2类型,以适应更复杂的处理需求。实验结果显示了map和mapToPair的应用效果。

map算子 会出现一对一的结果

将函数应用于 RDD 中的每个元素,将返回值构成新的 RDD

直接上到代码

ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(3);

        JavaRDD<Integer> parallelize = sc.parallelize(list);

        JavaRDD<Integer> map = parallelize.map(new Function<Integer, Integer>() {
            @Override
            public Integer call(Integer integer) throws Exception {
                return integer + 1;
            }
        });

        List<Integer> collect = map.collect();

        for (Integer integer:collect){
            System.out.println(integer);
        }

结果:
20/05/13 16:51:41 INFO TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 51 ms on localhost (executor driver) (1/1)
20/05/13 16:51:41 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose tasks have all completed, from pool
20/05/13 16:51:41 INFO DAGScheduler: ResultStage 0 (collect at Testwordcount.java:87) finished in 0.094 s
20/05/13 16:51:41 INFO DAGScheduler: Job 0 finished: collect at Testwordcount.java:87, took 0.142422 s
2
3
4
5
4

maptopair 可以做一些数据类型的转换
代码如下 可以将 输入的(String,int等类型) 类型转换成Tuple2

        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(3);


        JavaRDD<Integer> parallelize = sc.parallelize(list);

        JavaPairRDD<Integer, Integer> integerIntegerJavaPairRDD = parallelize.mapToPair(new PairFunction<Integer, Integer, Integer>() {
            @Override
            public Tuple2<Integer, Integer> call(Integer integer) throws Exception {
                return new Tuple2<Integer, Integer>(integer, 1);
            }
        });

        List<Tuple2<Integer, Integer>> collect = integerIntegerJavaPairRDD.collect();


        for (Tuple2<Integer, Integer> integer: collect){
            System.out.println(integer);
        }

结果:
(1,1)
(2,1)
(3,1)
(4,1)
(3,1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值