Я работаю над проектом hadoop и после многих посещений различных блогов и чтения документации, я понял, что мне нужно использовать функцию вторичной сортировки, предоставляемую инфраструктурой hadoop.Secondary Sort in Hadoop
Мой входной формат имеет вид:
DESC(String) Price(Integer) and some other Text
Я хочу, чтобы значения в редукторе быть порядок убывания цены. Также при сравнении DESC у меня есть метод, который принимает две строки и Процент, и если сходство между двумя строками равно или больше, чем процент, тогда я должен считать их равными.
Проблема заключается в завершении работы по сокращению. Я вижу несколько DESC, которые похожи на другие строки, и все же они находятся в разных группах.
Вот мой метод CompareTo композитного ключа
public int compareTo(VendorKey o) {
int result =-
result = compare(token, o.token, ":") >= percentage ? 0:1;
if (result == 0) {
return pid> o.pid ?-1: pid < o.pid ?1:0;
}
return result;
}
и сравнить метод группировки Компаратор
public int compare(WritableComparable a, WritableComparable b) {
VendorKey one = (VendorKey) a;
VendorKey two = (VendorKey) b;
int result = ClusterUtil.compare(one.getToken(), two.getToken(), ":") >= one.getPercentage() ? 0 : 1;
// if (result != 0)
// return two.getToken().compareTo(one.getToken());
return result;
}
Помогло ли вам использовать метод compareTo? – aventurin