2016-11-28 80 views
0

我是Hadoop和Mapreduce的新手。我需要使用mapreduce比较两个excel文件。我必须去mapreduce,因为这些文件的大小将非常大(> 10GB)。我的问题是如何从不同的映射器获取两个不同的输入文件并在Reducer中比较这两个文件。我必须将此应用程序转换为jar并在Amazon EMR中运行它。我无法在Web中找到适合此教程的教程。请提供一些想法来做到这一点。使用Hadoop Mapreduce比较两个Excel文件

+0

我想你想按行Excel表格的行进行比较。这两个电子表格中是否有共同的列,它们将与两个电子表格中的行相关联? – Amit

+0

Amit,实际上我需要比较两个excel文件中的每个单元格。我可以循环它。但在此之前,我需要读取excel文件并将其发送给reducer –

+0

请不要急于对mapper或reducer这么快。比较每个单元格是否意味着第一个电子表格中的A1与第二个中的A1比较?或A1与另一个电子表格中的所有其他单元格? – Amit

回答

0

我认为分布式缓存在你的情况下会很有用。我没有使用大型文件的分布式缓存,但请探索并让我知道它是否适合你。

+0

感谢您的回复。我会尝试并让你知道。 –

0

根据您的回答我的评论在这里是如何,我认为它应该,如果你使用普通实现它来完成的map-reduce -

  1. 创建一个自定义InputFormat,读取Excel电子表格。
  2. 作为此操作的一部分,您需要RecordReader读取Excel电子表格并输出Cell位置(例如A1)作为关键字并将其内容作为Value输出。
  3. 一旦读取了文件,您需要使用Key(这是单元格位置)在两个数据集上进行内部连接。
  4. 加入后,您可以比较单元格的内容。

如果您查看Apache Pig或Cascading类型的抽象普通map-reduce的API,可能会有所帮助。

问候, 阿米特