假设我在单独的excel文件中有大量独立的数据集。
在运行效率方面,使用clojure pmap函数处理数据还是使用hadoop map reduce更好?
每个excel文件至少由34000行组成,我有相当多的行。
对于初学者的问题,我很抱歉,因为我对这两个方面都比较陌生,正在对它们进行研究
正如你们中的一些人所解释的,
也许还有一个问题是比较clojure pmap和运行同一软件副本的多个示例的示例,它们之间有什么区别?
我唯一能想到的是,pmap可以接受任何数量的变量,但是,每个应用程序示例读取一个文件需要预先知道文件的数量,并初始化示例
3条答案
按热度按时间mkh04yzy1#
很多语言都有map-reduce功能,包括clojure。
我想说hadoop将是不折不扣的赢家,因为它通过机器集群来管理它。这是大规模并行化的潜力,这将使它有明显的优势,任何其他没有它内置。
l7mqbcuq2#
我不会去运行和建立一个hadoop集群仅仅为了能够处理很多小文件(这对hadoop来说并不理想)。hadoop面向处理大文件(其块大小为64m),map reduce的效率来自于让这些大文件分布在集群上并将计算发送到数据。
在您的情况下,运行多个软件副本(每个副本一次处理一个文件)似乎可以解决问题,并且开销最小—包括计算和操作开销(即设置和维护hadoop)。
hadoop能给你的一件事是处理任务的管理,也就是在失败等情况下退出,但是对于你所描述的来说,这似乎又是一种过度的杀伤力
pw9qyyiw3#
我会说使用hadoop,但不是直接使用,而是通过clojure的cascalog。这里的价值主张是hadoop提供给您的一切,再加上强大的声明性查询语言(这可能会使使用cascalog变得有价值,即使任务相对较小;在本地模式下使用hadoop进行安装完全没有麻烦)。
最初的介绍性博客文章仍然是最好的起点(尽管现在有很好的文档可用——请参阅github上的wiki):第一篇文章在这里,最后链接到第二篇文章。
为了让你领略一下它的样子,这里有一个来自第一个教程的片段(找到所有跟随者比跟随者年龄大的“跟随”关系):
在集群上运行这个也没问题,请参阅nathanmarz博客上使用cascalog的38行代码中的新闻提要作为示例。