从wikipedia加载30000个文档

oogrdqng  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(321)

我有一个wikipedia的url,我想用wikiapi从该页面和其他引用页面加载多达30000个文档的内容,我可以通过url进行循环,但这不是一个有效的方法。我还有别的办法可以做到吗。我需要这个来填充hadoop中的hdfs。

jq6vz3qz

jq6vz3qz1#

您可以下载wikimedia软件和数据库映像,设置wikipedia并在本地访问它。这是很好的描述,应该是更有效的,然后通过网络请求的页面数。请参见:http://www.igeek.co.za/2009/10/16/how-to-mirror-wikipedia/
还有许多其他来源和预处理的网页。接下来的问题是,您计划在下一步中如何处理内容。

ocebsuys

ocebsuys2#

正如jeff和nilsb所说,你有一个错误的意图去爬网wikipedia来填充你的hdfs。正确的做法是将整个wiki作为单个文件下载并加载到hdfs。
但如果我们从你的问题中的一些细节中抽象出来,它将转化为更一般的问题:如何使用hadoop对url指定的一些站点进行爬网?
所以答案是你应该上传带有url的文件到hdfs,编写一个Map程序(接受url,下载一个页面并将其作为 key=url 以及 value=page's body )并将作业配置为使用nlineinputformat来控制每个Map程序将处理的url的计数。通过控制该参数,您将能够通过其自身和Map槽计数来控制并行级别。

wtzytmuj

wtzytmuj3#

有一些方法可以做到这一点。toolserver用户可以直接访问所有元数据,但不能访问文本。如果这适合您,您可以让他们中的一个通过查询服务运行查询。这是一种非常直接的方法,可以找出链接的页面等,并构建页面ID或修订ID的Map。
否则,请看一看数据库转储,它非常适合批量工作,但需要您进行一些处理。
最后,wikipedia被用来处理大量的机器人程序和api碎片。这并不理想,但如果没有其他适合您的方法,那么运行一个计时器,每秒钟启动一次新的查询,您将在8小时内完成。

相关问题