2013-08-01 46 views
2

我的文件內容就是這樣。如何在Hadoop作業中將'Text'作爲Mapper輸入鍵傳遞?

TestKey, TestValue 
TestKey1, TestValue1 

我想將Mapper Key作爲TestKey和Mapper的值傳遞給TestValue等等。

所以我試圖寫自定義RecordReader來實現這一點。

但它的拋出錯誤像不能種姓LongWritable與文本。

如何將文本作爲我的映射器輸入鍵傳遞?

在此高度讚賞任何幫助。

感謝, 桑卡

+0

向你顯示RecordReader會有幫助。 – Tariq

回答

0

它看起來像你需要輸入格式更改爲KeyValueTextInputFormat和分離到mapreduce.input.keyvaluelinerecordreader.key.value.separator設置爲", "

默認輸入格式是TextInputFormat它使用一個字節偏移到該文件,格式化爲LongWritable作爲密鑰,線作爲值。這就是爲什麼你目前看到一個錯誤。

:這裏假定您使用的是新的API;舊的API有些類似。

+0

傑森,我認爲你的答案的第一部分是正確的,但默認輸入格式的第二部分不是FileInputFormat,而是實際擴展FileInputFormat的TextInputFormat。 KeyValueTextInputFormat也在內部擴展FileInputFormat。 – Binary01

+0

@ Binary01:你是對的。謝謝! – jason

相關問題