在hadoop中查找不同列的最有效方法是什么

时间:2013-02-23 21:11:15

标签: java hadoop mapreduce

我有一个大小为1TB的文件。我们需要在文件中找到4列的不同值。 例如,如果我们有列A,B,C,D,E,F等。其中我们需要在A列中找到所有不同的值,并在HDFS中创建一个文件。同样适用于B,C和D.

注意:我们必须仅为4列而不是剩余的列。文件中总共有300列。

我们需要为此编写Map Reduce。什么是解决这个问题的有效方法。感谢您的帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

让映射器输出您需要唯一值的每列的记录。因此,在您的示例中,地图将(使用单个输入记录)输出4条记录,密钥为A,B,C,D。

在reducer中,您可以处理所有值。

根据您需要的详细信息,您可能需要使用看起来像这样的键:“A:A列的值”

答案 1 :(得分:0)

基本上你需要过滤掉重复的记录,这可以从mapper,combiner和reducer开始的几个步骤完成。你也可以使用java Set。 Mapper可以输出key = 'A栏'值='完整记录'。将密钥存储在Set中,如果设置包含密钥则不发出记录。在组合器中也可以这样做。也许你不需要减速机。还需要锻炼,因此Set不会通过清除某些特定大小来创建内存不足错误。