删除scala(pagerank)键中不存在的值

bfhwhh0e  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(279)

我正在尝试用scala构建pagerank算法。
我这里有一个数据集下载表http://en.wikipedia.org/wiki/wikipedia:数据库下载
是维基百科的数据库。
我已经Map的标题和链接出现在标题页如下

graph = 
TitleA, LinkB LinkC LinkD
TitleB, linkC
TitleD, linkA

a、 b,c表示它们具有相同的名称,但存在于标题区或链接区中。
现在,我需要删除标题中不存在的链接。
所以,输出应该是

corgraph = 
TitleA, LinkB LinkD
TitleB, linkC
TitleD, linkA

从titlea中删除linkc。
这是我的代码供参考

val graph = lines.flatMap (line => {
        val titlePattern = "<title>(.+?)</title>".r //define regex of title string out from <title> tag
        val linkPattern = "\\[\\[(.+?)([\\|#]|\\]\\])".r  //define regex of link string out from [[]] area          
        val title = titlePattern.findFirstMatchIn(line).get.group(1) // find title by defined regex

        //find all link in pages and do map reduce
        linkPattern.findAllIn(line).matchData.map(link => {
          val corlink = link.group(1).replaceAll("&lt;", "<").replaceAll("&gt;", ">").replaceAll("&amp;", "&").replaceAll("&quot;", "\"").replaceAll("&apos;", "\'")
          val cortitle = title.replaceAll("&lt;", "<").replaceAll("&gt;", ">").replaceAll("&amp;", "&").replaceAll("&quot;", "\"").replaceAll("&apos;", "\'")
          (cortitle -> corlink)
        })               
    }).map{ case(url, link) => if(graph.contains(link))(url -> link)}

以及错误消息

[error] PageRank.scala:28:recursive value graph needs type
[error] }).map{ case(url, link) => 
if(graph.contains(link))(url -> link)}(url -> link)}

有人能帮忙吗?谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题