2011-06-13 39 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