2015-03-30 71 views
0

相當新的HDFS:Hadoop的自定義映射輸出格式爲減速

糾正我,如果我錯了,但據我所知:

Mapper<Object, Text, Text, Text>

最後兩個Text是返回類型的映射器。假設我想返回Text, <Text, IntWriteable>。我怎麼能做到這一點?另外,我應該查看文檔中的哪個位置?

例如,映射器接收的對象和之後的文本,它與數據的輸入文件中的行一些邏輯,我想它會返回類似

context.write(Text,[Text, IntWriteable])

+0

,你能不能給我們您正在試圖解決的問題有點多細節?如果沒有上下文,我很難看到你需要的是一種自定義的可寫類型,或者例如只是調整你的映射器輸出策略就可以實現。 – 2015-03-31 05:14:55

回答

1
+0

你會碰巧知道如何在Mapper中使用globstatus嗎?我也遇到了麻煩。它一直在竊聽我整天。抱歉打擾你:http://stackoverflow.com/questions/29355148/how-to-pass-filesystem-to-mapper-hdfs – Liondancer 2015-03-31 05:48:30

1

您可能需要定義喲你自己的數據類型。如果需要比較操作,則執行WritableComparable接口,否則只執行Writable接口正常。

下面是一個使用示例WritableComparable接口:

public class MyDataType implements WritableComparable<MyDataType> { 
    private Text name; 
    private IntWritable age; 

    @Override 
    public void readFields(DataInput in) throws IOException { 
     name.readFields(in); 
     age.readFields(in); 
    } 

    @Override 
    public void write(DataOutput out) throws IOException { 
     name.write(out); 
     age.write(out); 
    } 

    @Override 
    public int compareTo(MyDataType o) { 
     int nameCompare = name.compareTo(o.name); 
     if(nameCompare != 0) { 
      return nameCompare; 
     } else { 
      return age.compareTo(o.age); 
     } 
    } 
}