0

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


感谢您的回答,我会尝试这些,看看什么是最好的解决方案。

4

3 回答 3

0

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

于 2013-04-25T12:04:16.897 回答
0

分布式缓存适用于小数据集,可以考虑缓存在内存中。如您所述,如果数据很大,则不能选择分布式缓存。

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

在 Hadoop Map/Reduce 中为多个映射器配置 Map Side join

于 2013-04-25T15:06:25.317 回答
0

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

  • 级联(特别是 CoGroup 如果内存是一个问题,而 HashJoin 如果不是)
于 2013-04-25T17:45:50.007 回答