Spark pagerank

  • 算法的流程:
    • 初始化:我们用pages(pairRDD)来记录每个页面和其相关联的页面之间的关系,用ranks(pairRDD)来记录每个页面初始化的rank,初始值为1.0
    • 在每次迭代的过程中,对页面p,我们向其每个相邻的页面,发送一个至为rank(p)/numNeighbors(p)的贡献值
    • 将每个页面收到的contributions相加得到contributionsReceived
    • 将每个页面的排序值设置为0.15 +0.85 * contributionsReceived
  • 算法的实现:
    public static JavaPairRDD<Integer,ArrayList<Integer>> run_page(){
        JavaPairRDD<Integer,ArrayList<Integer>> res = sc.textFile(
                "/home/liang/workspace/learnSpark/pagerank.txt"
        ).mapToPair(new PairFunction<String, Integer, ArrayList<Integer>>() {
            @Override
            public Tuple2<Integer, ArrayList<Integer>> call(String s) throws Exception {
                String key = s.split(" ")[0];
                String values = s.split(" ")[1];
                ArrayList<Integer> values_integer = new ArrayList<Integer>();
                for(String str : values.split(",")){
                    values_integer.add(Integer.parseInt(str));
                }
                return new Tuple2<Integer, ArrayList<Integer>>(Integer.parseInt(key), values_integer);
            }
        });
        return res;
    }
    public static JavaPairRDD<Integer,Double> run_rank(){
        JavaPairRDD<Integer, Double> res = sc.textFile(
                "/home/liang/workspace/learnSpark/pagerank.txt"
        ).mapToPair(
                line->new Tuple2<Integer, Double>(Integer.parseInt(line.split("")[0]),1.0)
                );
        return res;
    }
    public static JavaPairRDD<Integer,ArrayList<Integer>> run_page(){
        JavaPairRDD<Integer,ArrayList<Integer>> res = sc.textFile(
                "/home/liang/workspace/learnSpark/pagerank.txt"
        ).mapToPair(new PairFunction<String, Integer, ArrayList<Integer>>() {
            @Override
            public Tuple2<Integer, ArrayList<Integer>> call(String s) throws Exception {
                String key = s.split(" ")[0];
                String values = s.split(" ")[1];
                ArrayList<Integer> values_integer = new ArrayList<Integer>();
                for(String str : values.split(",")){
                    values_integer.add(Integer.parseInt(str));
                }
                return new Tuple2<Integer, ArrayList<Integer>>(Integer.parseInt(key), values_integer);
            }
        });
        return res;
    }
    public static JavaPairRDD<Integer,Double> run_rank(){
        JavaPairRDD<Integer, Double> res = sc.textFile(
                "/home/liang/workspace/learnSpark/pagerank.txt"
        ).mapToPair(
                line->new Tuple2<Integer, Double>(Integer.parseInt(line.split("")[0]),1.0)
                );
        return res;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值