hadoop和supercsv

9w11ddsr  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(288)

我必须处理非常大的文本文件中的数据(比如5 tb的大小)。处理逻辑使用supercsv解析数据并对其运行一些检查。显然,由于规模相当大,我们计划使用hadoop来利用并行计算。我在我的机器上安装了hadoop,开始编写mapper和reducer类,我被卡住了。因为Map需要一个键-值对,所以要读取这个文本文件,我不确定在这个特定场景中应该是什么键和值。有人能帮我一下吗。
我的思维过程是这样的(如果我是正确的,请告诉我)1)使用supercsv读取文件,hadoop为hdfs中的每个文件块生成supercsv bean(我假设hadoop负责分割文件)2)为每个supercsvbean运行我的检查逻辑。

oknwwptz

oknwwptz1#

数据换行是否分开?i、 例如,如果您只是拆分每个换行符上的数据,那么每个块是否总是一条完整的记录?这取决于supercsv如何编码文本,以及实际数据是否包含换行符。
如果是:
只需使用textinputformat。它提供(我认为)字节偏移量作为map键,整行作为值。您可以忽略键,并使用supercsv解析该行。
如果没有:
您必须编写自己的自定义输入格式-这里有一个很好的教程:http://developer.yahoo.com/hadoop/tutorial/module5.html#fileformat. 具体的键是什么,值是什么,对Map器的输入没有太大的影响;只需确保其中一个包含所需的实际数据。甚至可以使用nullwriteable作为其中一个的类型。

相关问题