1

假设我在单独的 excel 文件中有大量独立的数据集。

在运行时效率方面,使用clojure Pmap函数处理数据或hadoop map reduce会更好吗?

每个 excel 文件至少包含大约 34000 行,我有很多。

对不起初学者的问题,因为我对两者都比较陌生并且正在研究它们

正如你们中的一些人所解释的,

也许还有一个问题是将 clojure pmap 与运行相同软件副本的多个实例的实例进行比较,它们之间有什么区别?

我唯一能想到的是 pmap 可以接受任意数量的变量,但是,每个应用程序实例读取一个文件需要预先知道文件的数量并初始化实例

4

3 回答 3

2

我会说使用 Hadoop,但不是直接使用,而是通过Clojure 的Cascalog。这里的价值主张是 Hadoop 为您提供的一切以及出色的声明式查询语言(即使任务相对较小,这也可能使使用 Cascalog 很有价值;在本地模式下使用 Hadoop 设置完全没有麻烦)。

最初的介绍性博客文章仍然是最好的起点(尽管现在有很多可用的文档——请参阅 GitHub 上的 wiki):第一篇在这里,它在最后链接到第二篇。

为了让您了解它的外观,这是第一个教程的片段(查找所有“关注”关系,其中关注者比他们关注的人年长):

(?<- (stdout) [?person1 ?person2] 
  (age ?person1 ?age1)
  (follows ?person1 ?person2)
  (age ?person2 ?age2)
  (< ?age2 ?age1))

在集群上运行它也没有问题,请参阅Nathan Marz 博客上使用 Cascalog 的 38 行代码中的 News Feed示例。

于 2013-06-05T02:09:21.347 回答
2

我不会为了能够处理大量小文件而运行和建立 Hadoop 集群(无论如何这对于 Hadoop 来说并不理想)。Hadoop 旨在处理大文件(其块大小为 64M),而地图降低效率来自于让这些大文件分布在集群上并将计算发送到数据。

在您的情况下,似乎运行您的软件的多个副本,每个副本一次处理一个文件可以解决问题,并且开销最小 - 计算和操作(即设置和维护 hadoop)。

hadoop 可以为您提供的一件事是处理任务的管理,即在发生故障等情况下退出,但同样,对于您所描述的内容来说,这似乎有些矫枉过正

于 2013-06-05T02:43:51.177 回答
1

许多语言都具有 map reduce 功能,包括 Clojure。

我会说 Hadoop 将是毫无争议的赢家,因为它通过机器集群来管理它。这是大规模并行化的潜力,这将使它比其他任何没有内置它的东西都具有明显的优势。

于 2013-06-05T01:52:29.743 回答