据说我在单独的excel文件中有大量独立的数据集。
就运行时效率而言,使用clojure Pmap函数处理数据或hadoop map会更好吗?
每个excel文件至少包含大约34000行,并且我有相当多的行。
对于初学者问题感到抱歉,因为我对两者都比较陌生,正在研究它们
正如你们中的一些人所解释的那样,
或许还有一个问题是将clojure pmap与运行相同软件副本的多个实例的实例进行比较,它们之间的区别是什么?
我唯一能想到的是pmap可以接受任何数量的变量,但是,每个应用程序实例读取一个文件需要预先知道文件数量并初始化实例
答案 0 :(得分:2)
我会说使用Hadoop,但不是直接使用,而是通过来自Clojure的Cascalog。这里的价值主张是Hadoop为您提供的所有内容以及出色的声明性查询语言(即使任务相对较小,也可能使Cascalog值得使用;在本地模式下使用Hadoop进行设置完全没有问题。)
最初的介绍性博客文章仍然是最好的起点(尽管现在有很好的文档 - 请参阅GitHub上的wiki):第一个是here,它最后会链接到第二个。{3}}
为了让您体验它的样子,这里是第一个教程的片段(找到跟随者比他们所关注的人更老的所有“跟随”关系):
(?<- (stdout) [?person1 ?person2]
(age ?person1 ?age1)
(follows ?person1 ?person2)
(age ?person2 ?age2)
(< ?age2 ?age1))
在群集上运行此问题也没问题,请参阅Nathan Marz博客上的News Feed in 38 lines of code using Cascalog作为示例。
答案 1 :(得分:2)
我不会去运行并建立一个Hadoop集群只是为了能够处理很多小文件(这对Hadoop来说并不理想)。 Hadoop主要用于处理大型文件(其块大小为64M),并且地图降低效率来自于让这些大型文件分布在群集上并将计算发送到数据。
在您的情况下,似乎运行多个软件副本,每次处理一个文件将解决问题,并且开销最小 - 计算和操作(即设置和维护hadoop)。
hadoop可以给你的一件事是处理任务的管理,即在出现故障等情况下退休,但同样,你所描述的内容似乎有点过分
答案 2 :(得分:1)
许多语言都有地图缩减功能,包括Clojure。
我会说Hadoop会成为最让人失败的赢家,因为它通过群集机器来管理它。这是大规模并行化的潜力,可以使其与其他任何没有内置的内容相比具有明显的优势。