用于维基百科页数数据集的 Hadoop

标签 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? action=query&titles=布鲁日&prop=langlinks&lllimit=500)。

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

我的草图方法是:

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

现在,查询每一行的 MediaAPI 似乎相当不方便,但目前我无法找到更好的解决方案。

您认为当前的方法是否可行,或者您可以考虑其他方法吗?

旁注:创建的作业链将用于在我的(小型)Hadoop 集群上进行一些时间测量,因此更改任务仍然可以

编辑: Here是我现在刚刚发现的一个非常相似的讨论..

最佳答案

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

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

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

然后您可以在map/reduce作业处理pagecount-statistic中使用对应关系。如果您这样做,您将独立于 mediawiki 的 api,加快数据处理速度并改进调试。

关于用于维基百科页数数据集的 Hadoop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12882312/

相关文章:

hadoop - 仅在master中安装rhdfs和rmr2是否足够,还是需要在slave中安装这些库?

hadoop - hive是什么,是数据库吗?

javascript - 在 MongoDb 中使用 mapReduce 获取文档(行)计数

mediawiki - 维基百科 API : Excluding References From Parse Request

apache-spark - 将 ORC 文件从 spark 写入 hadoop 时出错

hadoop - 有人知道如何修复 hadoop-functions.sh "syntax error near unexpected token ` <'"吗?

java - Pig 脚本在 0.12.0 上工作但不在 0.11.1 上工作

java - SecondarySort -OverrideError(删除注释)

javascript - 维基百科是否阻止 jquery 加载其图像

c# - 连接到维基百科 API 的 WebRequest