2014-09-26 23 views
1

我的輸入文件是這樣的:無法解析使用KeyValueTextInputFormat輸入Hadoop中的MapReduce

Key1 : Value1,Value2 
Ket2 : Value3,Value4 

在映射器,我想一鍵搞定,其中「:」是分隔符。對於這一點,我的代碼是這樣的:

JobConf conf = new JobConf(newCount.class);  
conf.set("mapred.input.keyvaluelinerecordreader.key.value.separator", ":")  
conf.setInputFormat(KeyValueTextInputFormat.class); 

我也曾嘗試:

conf.set("key.value.separator.in.line.input.line", ":") 

,但無法分析。當我打印鍵,打印這樣的 - >key: ,我只希望--->Key

回答

1

如果您正在使用新的API(Hadoop的2.X),我從API看到打印要設置的正確參數是mapreduce.input.keyvaluelinerecordreader.key.value.separator

即,使用mapreduce而不是mapred

UPDATE:也可能是分隔符':'在輸入中多次出現。例如,如果輸入記錄是key1: : value1 value2 value3,那麼您會得到類似於您在問題中描述的內容。如果是這種情況,那麼您應該正確選擇分隔符,以便它恰好出現一次。

+0

我嘗試這樣做太多,但其沒有工作.. :( – user2895589 2014-09-26 20:19:59

+0

也許值以啓動「:」字符,或用「鑰匙端: '人物?我的意思是,是否':'出現不止一次? – vefthym 2014-09-30 12:31:44

1

如果使用Hadoop 2.x中,參數是

mapreduce.input.keyvaluelinerecordreader.key.value.separator

你可以分享你的輸入數據的樣本?