Spark transformation

所有的transformation都是采用的懒策略,就是如果只是将transformation提交是不会执行计算的,计算只有在action被提交的时候才被触发。

分析join规则

1,join示例代码片段

JavaPairRDD<Integer,Integer> tc = ctx.parallelizePairs(generateGraph(),slices).cache();

JavaPairRDD<Integer,Integer> edges = tc.mapToPair(new PairFunction<Tuple2<Integer, Integer>, Integer, Integer>() {
            @Override
            public Tuple2<Integer, Integer> call(Tuple2<Integer, Integer> e) throws Exception {

                return new Tuple2<Integer,Integer>(e._2(),e._1());
            }
        });

JavaPairRDD<Integer,Tuple2<Integer,Integer>>  tcJoinEdges = tc.join(edges);

数据跟踪分析

tc数据集:

(x,y)

(y,z)

(x,z)

(w,y)

edges数据:

(y,x)

(z,y)

(z,x)

(y,w)

tc.join(deges)结果:

(y,(z,x))

(y,(z,w))

2,mapToPair示例代码片段

<span style="font-family:SimSun;font-size:14px;">JavaPairRDD<Integer,Integer> mapToPaired = tcJoinEdges.mapToPair(ProjectFn.INSTANCE);

    static class ProjectFn implements PairFunction<Tuple2<Integer,Tuple2<Integer,Integer>>,Integer,Integer>{
        static final ProjectFn INSTANCE = new ProjectFn();


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

            return new Tuple2<Integer,Integer>(triple._2()._2(),triple._2()._1());
        }
    }</span>

mapToPaired结果集:

(x,z)

(w,z)

3,union示例代码片段

<span style="font-family:SimSun;font-size:14px;">JavaPairRDD<Integer,Integer> unioned = tc.union(mapToPaired);</span>
unioned结果集:
(x,y)

(y,z)

(x,z)

(w,y)

(x,z)

(w,z)

4,去除重复结果代码片段

JavaPairRDD<Integer,Integer> distincted = unioned.distinct().cache();
distincted结果集:

(x,y)

(y,z)

(x,z)

(w,y)

(w,z)














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值