2013-04-09 12 views
2

在我的mapreduce作業中,我只想輸出一些行。如何僅輸出context.write(k,v)中的值

但是,如果我的代碼是這樣的: context.write(data,null);

該程序將拋出java.lang.NullPointerException。

我不想像下面的代碼: context.write(data,new Text(「」));

因爲我必須修剪輸出文件中每一行的空白。

有什麼好方法可以解決它嗎? 在此先感謝。


對不起,這是我的錯。我仔細檢查了程序,發現原因是我將Reducer設置爲組合器。

如果我不使用組合器,語句 context.write(data,null);減速機中的 工作正常。在輸出數據文件中,只有數據線。


從hadoop的明確指導分享NullWritable解釋:

NullWritable是一種特殊類型的可寫的,因爲它有一個零長度序列。沒有字節 被寫入或讀取流。它用作佔位符;例如,在 MapReduce中,當您不需要 來使用該位置時,可以將鍵或值聲明爲NullWritable,它有效地存儲常量空值。 NullWritable也可以 作爲SequenceFile中的鍵用於存儲值列表,而不是鍵值對的 。它是一個不可變的單例:可以通過調用 NullWritable.get()來檢索實例。

+1

如果您使用新文本(「」),則不需要修剪。如果僅使用新的文本(「」),則必須修剪。除了API還有一個Text()默認的構造函數。 – shazin 2013-04-09 10:48:54

+0

謝謝,我試試看。 – HaiWang 2013-04-09 10:51:50

回答

相關問題