使用mapreduce解析freebase rdf转储

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

我从freebase下载了rdf数据转储,需要提取的是freebase中每个实体的英文名称。
我是否必须使用hadoop和mapreduce来实现这一点,如果是,如何实现?或者有其他方法提取实体名称吗?
如果每个实体的标题/名称都在一个.txt文件中各自的行上,那就更好了

pvabu6sv

pvabu6sv1#

这里有一个googlecomputeengine的屏幕广播,向你展示了如何做到这一点。

fafcakar

fafcakar2#

您可以使用hadoop,但是对于这样简单的处理,您将花费更多的时间来解压缩和拆分输入,而不是并行搜索所节省的时间。一个简单的 zgrep 会在更短的时间内完成你的任务。
大致是这样的:

zegrep $'name.*@en\t\\.$' freebase-public/rdf/freebase-rdf-2013-09-15-00-00.gz | cut -f 1,3 | gzip > freebase-names-20130915.txt.gz

将给你一个压缩的两列文件的自由基MID和他们的英文名称。你可能想让grep更具体一点,以避免误报(并测试它,我还没有做)。这个文件压缩了20gb以上,所以需要一段时间,但比准备hadoop作业所需的时间还要短。
如果您想进行额外的过滤,例如只提取/common/topic类型的实体,您可能会发现您需要使用类似python的脚本语言,以便能够同时跨多行查看和计算。

kr98yfug

kr98yfug3#

不,我不认为你需要使用hadoop和mapreduce来做到这一点。您可以轻松地创建一个web服务来提取rdf并发送到一个文件。下面的[1]博客文章解释了如何使用wso2数据服务服务器提取rdf数据。类似地,您可以使用wso2 dss数据联合[2]功能提取rdf数据并将其发送到excel数据表
[1] - http://sparkletechthoughts.blogspot.com/2011/09/extracting-rdf-data-using-wso2-data.html
[2] - http://prabathabey.blogspot.com/2011/08/data-federation-with-wso2-data-service.html

相关问题