2011-03-10 47 views
1

我是Hadoop的新手。我对此知之甚少。 我的情况如下: 我有一组具有相同模式的xml文件(700GB +)。使用Hadoop处理xml文件

<article> 
<title>some title</title> 
<abstract>some abstract</abstract> 
<year>2000</year> 
<id>E123456</id> 
<authors> 
    <author id="1"> 
    <firstName>some name1</firstName> 
    <lastName>some name1</lastName> 
    <email>[email protected]</email> 
    <affiliations affid="123"> 
    <org>some organization1</org> 
    <org>some organization2</org> 
    </affiliations> 
    </author> 
    <author id="2"> 
    <firstName>some name2</firstName> 
    <lastName>some name2</lastName> 
    <email>[email protected]</email> 
    <affiliations affid="123"> 
    <org>some organization1</org> 
    <org>some organization2</org> 
    </affiliations> 
    </author> 
    <tags> 
    <tag>medicin</tag> 
    <tag>inheritance</tag> 
    </tags> 
</authors> 
<references> 
    <reference>some reference text1</reference> 
    <reference>some reference text2</reference> 
</references> 
</article> 

我的XML文件中的数据转换到关系数据库包含以下各表

  • 文章
  • 作者
  • 标签
  • 参考

我有一套工作的工具用于生成统计报告列表和执行一些其他工作人员的表格。由于在References表上使用全文搜索的工具,我将它存储在Lucene Solr索引中。

我的问题是: 我可以使用Hadoop的为:

  1. 存储是在XML文件中
  2. 制造某种以上(作者,文章,标签和列出的实体之间的分离数据参考资料)
  3. 运行我的工具对数据执行一组非常复杂的查询,并且如果可以使用hadoop完成这些工作,它是否会有很好的性能?

如果Hadoop是不是情况下,一个很好的候选人,将是任何其他的NoSQL数据库MongoDB的一样或卡桑德拉一个更好的解决方案(因为我的关系系统最大的问题是非常糟糕的表现与复杂的算法,我用来做我的工作)?

预先感谢您。

+0

如果没有关于您打算在数据上运行哪种查询的更多具体细节,这几乎是不可能的。 – bajafresh4life

+0

完全同意bajafresh4life,不知道类型的查询很难理解他们是否可以转换为mapreduce(hadoop)或不。 其他的一点是hadoop不是nosql数据库。 Hadoop是文件系统+ fremework与它一起工作。这里是与hadoop密切相关的Hbase,它是一个nosql数据库。 – yura

回答

0

你要求的声音与谷歌,雅虎,Bing等用网页吸引某些形式的标记,存储它们,处理它们以提取相关信息以及提供查询接口最重要的是。我建议看看这些搜索引擎如何利用MapReduceBigTable实现(如HBaseCassandra)来完成此操作。