2014-10-06 43 views
0

我試圖在作業的輸出中寫入多個值。爲此,我使用實現接口Writable的自定義寫入。這種自定義可寫,我稱之爲CompositeWritable實現了讀寫的兩種方法。當我運行作業時,輸出如下所示:Hadoop自定義可寫

key [email protected] 
lean [email protected] 
likely [email protected] 

我在想什麼?在工作規範中,我將輸出值類設置爲CompositeWritable。還有其他設置我錯過了嗎?

+0

當你說「輸出」你在看輸出文件嗎?你使用什麼OutputFormat?這似乎是從java.lang.Object繼承的「toString」的輸出。 – 2014-10-06 22:06:16

+0

是的,輸出文件。不指定輸出格式,我想它是TextOutputFormat。 – user3111525 2014-10-06 22:10:02

+0

嘗試明確設置'job.setOutputFormatClass(TextOutputFormat.class)',但結果相同。 – user3111525 2014-10-06 22:10:28

回答

1

TextOutputFormat似乎依賴於可寫的toString方法(see line 80)。在你的CompositeWritable類上實現一個合理的toString覆蓋,例如你可以在包含的項目上調用字符串並用分隔符將它們附加在一起。

1

你缺少

@Override 
    public String toString() { 
     return ___________; 
    } 

例子:

@Override 
     public String toString() { 
      return key+","+value; 
     } 

這裏項和值分隔使用 「」 seperator.You可以使用任何分隔符爲你的願望。