我正在澄清有关使用 Hadoop 处理大约 200 万个大文件的问题。我有包含 200 万行的文件数据,我想将每行拆分为单个文件,将其复制到 Hadoop 文件系统中,并使用 Mahout 执行词频计算。Mahout 以分布式方式使用 map-reduce 计算。但是为此,假设我有一个包含 200 万行的文件,我想将每一行作为计算词频的文档。我最终将拥有一个目录,其中包含 200 万个文档,每个文档由一行组成。这是否会为 n 个文件创建 n 个映射,这里为该过程创建 200 万个映射。这需要大量的计算时间。是否有任何替代方法来表示文档以加快计算速度。
问问题
180 次
2 回答
1
200 万个文件对于 hadoop 来说是很多的。不仅如此 - 运行 200 万个任务将有大约 200 万秒的开销,这意味着几天的小型集群工作。我认为问题在于算法性质 - 如何以您将拥有适度数量的映射器的方式将您的计算映射到 map reduce 范式。请写几行关于您需要的任务,我可能会建议算法。
于 2012-04-25T12:05:52.997 回答
0
Mahout 具有计算文本的 TF 和 IDF 的实现。检查 mahout 库,并将每一行拆分为一个文件在 hadoop map reduce 框架中并不是一个好主意。
于 2014-07-10T10:28:56.170 回答