हैडोप का डिफ़ॉल्ट तुलनित्र Writable
प्रकार (अधिक सटीक WritableComparable
) के आधार पर आपकी चाबियों की तुलना करता है। यदि आप IntWritable
या LongWritable
से निपट रहे हैं तो यह उन्हें संख्यात्मक रूप से सॉर्ट करेगा।
मुझे लगता है कि आप अपने उदाहरण में Text
का उपयोग कर रहे हैं, इसलिए आप प्राकृतिक सॉर्ट ऑर्डर रखते हैं।
विशेष मामलों में, हालांकि, आप अपना खुद का तुलनित्र भी लिख सकते हैं।
उदाहरण के लिए: केवल परीक्षण के के लिए , यहाँ एक त्वरित नमूना है पाठ चाबियों का सॉर्ट क्रम को बदलने के लिए कैसे: यह उन्हें पूर्णांक के रूप में व्यवहार करेगा और संख्यात्मक सॉर्ट क्रम का उत्पादन करेगा:
public class MyComparator extends WritableComparator {
public MyComparator() {
super(Text.class);
}
@Override
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
try {
String v1 = Text.decode(b1, s1, l1);
String v2 = Text.decode(b2, s2, l2);
int v1Int = Integer.valueOf(v1.trim());
int v2Int = Integer.valueOf(v2.trim());
return (v1Int < v2Int) ? -1 : ((v1Int > v2Int) ? 1 : 0);
}
catch (IOException e) {
throw new IllegalArgumentException(e);
}
}
}
jobrunner वर्ग सेट में :
Job job = new Job();
...
job.setSortComparatorClass(MyComparator.class);
स्रोत
2012-11-11 16:47:41
कोड उदाहरण – Alcott
के लिए बहुत बहुत धन्यवाद सॉर्ट ऑर्डर को भी बदलना संभव है? – masu