用于Wikipedia pagecount数据集的Hadoop

时间:2012-10-14 12:42:11

标签: hadoop mapreduce wikipedia concept wikimedia

我想构建一个基本上以维基百科pagecount-statistic为输入的Hadoop-Job,并创建一个像

这样的列表
en-Articlename: en:count de:count fr:count

为此,我需要与每种语言相关的不同文章名称 - 即Bruges(en,fr),Brügge(de),MediaWikiApi查询文章(http://en.wikipedia.org/w/api.php?行动=查询&安培;标题=布鲁日&安培;丙= langlinks&安培; lllimit = 500)

我的问题是找到解决这个问题的正确方法。

我的草图方法是:

  • 逐行处理pagecount文件(line-example'de Brugge 2 48824')
  • 查询MediaApi并写入某事。 like'en-Articlename:process-language-key:count'
  • 将所有en-Articlename-values聚合到一行(可能在第二个作业中?)

现在查询MediaAPI的每一行似乎都不太方便,但目前无法理解更好的解决方案。

您认为当前的方法是否可行,或者您能想到不同的方法吗?

旁注:创建的作业链应用于对我的(小)Hadoop-Cluster进行一些时间测量,因此更改任务仍然可以

编辑: Here是一个非常类似的讨论,我现在才发现..

1 个答案:

答案 0 :(得分:2)

我认为在批处理期间查询MediaApi不是一个好主意,因为:

  • 网络延迟(您的处理速度会大大减慢)
  • 单点故障(如果api或您的互联网连接断开,您的计算将被中止)
  • 外部依赖(很难重复计算并获得相同的结果)
  • 法律问题和禁止可能性

您问题的可能解决方案是下载整个wikipedia dump。每篇文章都以预定义的格式包含其他语言中该文章的链接,因此您可以轻松编写收集该信息的地图/减少作业,并在英文文章名称和其他文章之间建立对应关系。

然后你可以在地图/减少作业处理pagecount-statistic中使用对应关系。如果你这样做,你将独立于mediawiki的api,加快你的数据处理并改善调试。