2011-06-13 67 views
2

我有一个相当大的文本文件,我想将其转换为SequenceFile。不幸的是,该文件由Python代码组成,逻辑行通过几条物理线路运行。例如,
print“Blah Blah \
... blah blah”
每条逻辑行都以NEWLINE结尾。有人可以澄清我怎么可能在Map-Reduce中生成Key,Value对,其中每个Value都是整个逻辑行?Hadoop自定义拆分TextFile

回答

1

您应该在TextInputFormat上创建自己的变体。在那里你创建一个新的RecordReader,它跳过行,直到它看到一条逻辑行的开始。

+0

这比我目前没有更优雅。我构建了一个本地迭代,它给了我一条逻辑线,并使用RecordReader将整个文档作为ByteWritable进行传输。谢谢你的提示! – dvk 2011-06-17 04:51:29

0

预处理输入文件以删除换行符。创建SequenceFile的目标是什么?

4

我没有找到前面提到的问题,但是你只需通过一个简单的mapreduce作业遍历你的代码并将它们保存到一个StringBuilder中。如果要从新记录开始,请将StringBuilder刷新到上下文。诀窍是将您的映射器类中的StringBuilder设置为字段而不是局部变量。

那就是: Processing paraphragraphs in text files as single records with Hadoop