使用带有两个数据集的Hadoop

时间:2013-04-25 12:01:36

标签: hadoop

我正在使用Hadoop并尝试使用两个数据集进行一些交互功能,这是最好的方案。我可以将一个加载到内存中,然后在map函数中与其他数据集相交,但如果数据集对于RAM内存来说太大,那么它不是解决方案,您有什么想法?


感谢您的回答,我将尝试这些,看看哪种解决方案最好。

3 个答案:

答案 0 :(得分:0)

您可以尝试将它们放入DistributedCache - 该页面上有一个很好的说明性示例。

答案 1 :(得分:0)

分布式缓存适用于小型数据集,可考虑在内存中缓存。如果数据很大,则不像您提到的那样,分布式缓存不是一种选择。

Hadoop框架允许对大型数据集进行排序,但是,您可能必须遵循多个步骤,其中一个要求是,必须在进行连接之前对输入数据集进行排序。您可以考虑利用Apache Hive进行此操作。如果排除Hive,此链接中提到的步骤应该可以帮助您开始使用大型数据集

Configure Map Side join for multiple mappers in Hadoop Map/Reduce

答案 2 :(得分:0)

与围绕Hadoop API的其他平台系列相比,在MapRed中操纵Intersection很难。有人已经提到了Hive(如果你有SQL背景,超级容易做交叉),但你也可以考虑:

  • PIG
  • Cascading(如果内存是关注的话,特别是CoGroup,如果不是,则特别是HashJoin)