相當新的HDFS:Hadoop的自定義映射輸出格式爲減速
糾正我,如果我錯了,但據我所知:
Mapper<Object, Text, Text, Text>
最後兩個Text
是返回類型的映射器。假設我想返回Text, <Text, IntWriteable>
。我怎麼能做到這一點?另外,我應該查看文檔中的哪個位置?
例如,映射器接收的對象和之後的文本,它與數據的輸入文件中的行一些邏輯,我想它會返回類似
context.write(Text,[Text, IntWriteable])
相當新的HDFS:Hadoop的自定義映射輸出格式爲減速
糾正我,如果我錯了,但據我所知:
Mapper<Object, Text, Text, Text>
最後兩個Text
是返回類型的映射器。假設我想返回Text, <Text, IntWriteable>
。我怎麼能做到這一點?另外,我應該查看文檔中的哪個位置?
例如,映射器接收的對象和之後的文本,它與數據的輸入文件中的行一些邏輯,我想它會返回類似
context.write(Text,[Text, IntWriteable])
你必須實現在hadoop.I自定義寫我指着一些網站,可能會有幫助
https://halalhassan.wordpress.com/2013/12/15/custom-writables-in-hadoop-the-right-way/ http://www.hadoopmaterial.com/2013/10/custom-hadoop-writable-data-type.html
你會碰巧知道如何在Mapper中使用globstatus嗎?我也遇到了麻煩。它一直在竊聽我整天。抱歉打擾你:http://stackoverflow.com/questions/29355148/how-to-pass-filesystem-to-mapper-hdfs – Liondancer 2015-03-31 05:48:30
您可能需要定義喲你自己的數據類型。如果需要比較操作,則執行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);
}
}
}
,你能不能給我們您正在試圖解決的問題有點多細節?如果沒有上下文,我很難看到你需要的是一種自定義的可寫類型,或者例如只是調整你的映射器輸出策略就可以實現。 – 2015-03-31 05:14:55