大数据管理技术实习二——PageRank

大数据管理技术实习二——PageRank

实验目的

本实验为Map Reduce小组作业实习一项目,目的为给定风筝网络图为输入时实现PageRank算法,算出该图的值分布。

编程思路

参考:https://blog.csdn.net/u010414589/article/details/51404971

  1. 输入与输出:

    将给定网络图转化为文档,其中格式为:

    node_name_i pagerank_i i_link_1 i_link_2 …

    在这里插入图片描述

    在该表达方式中,每一行中第一列为网页i,第二列为该网页的pagerank 值(最初始每个网页的值都是均等的,都为1/n,在该网络中为0.1),之后的列均为网页i 链接的网页。 因为我们要迭代的计算PageRank值,那么每次MapReduce 的输出要和输入的格式是一样的,这样才能使得Mapreduce 的输出用来作为下一轮MapReduce 的输入。

  2. Map设计过程

    • 对每行文本进行分析,获得当前网页及其PageRank值(在network.jpg图中初始为0.1),以及当前网页要链接到的其他网页

    • 计算出要连接到其他网页的个数,求出当前网页对于其他网页的贡献

      pr=pagerank/count(float类型)

    • 在考虑map()的输出时,需要有两种输出,一种<key,value>为<其他网页,贡献值>;一种为<当前网页,要链接的所有其他网页>

    • 为区别两种输出,可以在第一种输出的value中加@,第二种的value中加&。

    • 这两种输出经shuffle后合并为一种,<key, value1,value2>,其中value1为本次迭代得到的来自其他网页的贡献值,value2为他的链接网页
      在这里插入图片描述

  3. Reduce设计过程

    ·Reduce的key直接作为输出的key,而对于value做如下处理:

    ·如果开头为@则表示应为得到的贡献,将key相同的此类value加和

    · 如果开头为&则仍然保持不变,作为该网页的链接网页

    · 最后得到的输出为<key,value1’,value2>,其中value1是本次迭代结束后该网页的PageRank值,而这个输出将作为下一次map的输入。
    在这里插入图片描述

  4. Main函数设计过程

    在main函数中给出了输入输出路径,通过循环来设定了总的迭代次数(一般为30~40次)。且每次迭代完毕后下次的输入路径更新为本次输出路径,输出路径更新。

在这里插入图片描述

实验步骤

  1. 创建java类PageRank,写入代码
    在这里插入图片描述

  2. 导出为可运行jar包

在这里插入图片描述
在这里插入图片描述

  1. 新建输入路径,并将文件传入hdfs:

    hdfs dfs -mkdir /pagerank
    hdfs dfs -mkdir /pagerank/input
    hdfs dfs -put ./Downloads/homework/adj.txt /pagerank/input

    (每次运行完都需要确认/output删除,才能顺利下次运行)

  2. 执行jar文件:hadoop jar PageRank.jar
    在这里插入图片描述
    在这里插入图片描述

    可以看到最后一步确实有结果写入。

  3. 取回本地查看

    hdfs dfs -get /pagerank/output/part-r-00000 ./
    cat part-r-00000

在这里插入图片描述

注意事项

注意迭代次数大于1时存储的顺序:第一次产生直接在output中,之后的次数分别存在1/12/123/…文件夹中,最终结果存在最长名字的文件夹中而不是最外层

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值