首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用supercsv的Hadoop

使用supercsv的Hadoop
EN

Stack Overflow用户
提问于 2012-10-26 02:56:52
回答 1查看 956关注 0票数 2

我必须在非常大的文本文件(如5TB大小)中处理数据。处理逻辑使用supercsv解析数据并对其运行一些检查。显然,由于规模相当大,我们计划使用hadoop来利用并行计算的优势。我在我的机器上安装了hadoop,然后开始编写mapper和reducer类,然后我就被卡住了。因为映射需要一个键值对,所以要读取这个文本文件,我不确定在这个特定场景中应该是什么键和值。有人能帮我解决这个问题吗。

我的思考过程是这样的(让我知道我是否正确) 1)使用superCSV和hadoop读取文件为hdfs中的每个文件块生成supercsvbean(我假设hadoop负责拆分文件) 2)对于每个supercsvbeans运行我的检查逻辑。

EN

回答 1

Stack Overflow用户

发布于 2012-10-26 07:00:45

数据是换行分隔的吗?也就是说,如果您只拆分每个换行符上的数据,那么每个块是否总是一个完整的记录?这取决于superCSV如何对文本进行编码,以及实际数据是否包含换行符。

如果是:

只需使用TextInputFormat即可。它为您提供(我认为)字节偏移量作为映射键,并将整行作为值。您可以忽略键,并使用superCSV解析该行。

如果不是:

您必须编写自己的自定义InputFormat -这里有一个很好的教程:http://developer.yahoo.com/hadoop/tutorial/module5.html#fileformat。键是什么以及值是什么的细节对映射器输入并不太重要;只需确保其中一个包含您想要的实际数据。您甚至可以使用NullWritable作为其中之一的类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13075343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档