Gần đây, tôi đang đọc hướng dẫn dứt khoát về hadoop. Tôi đã hai câu hỏi:Điều đó có nghĩa gì đối với Text.hashCode() & Interger.MAX_VALUE?
1.Tôi thấy một đoạn mã của phân vùng một tùy chỉnh:
public class KeyPartitioner extends Partitioner<TextPair, Text>{
@Override
public int getPartition(TextPair key, Text value, int numPartitions){
return (key.getFirst().hashCode()&Interger.MAX_VALUE)%numPartitions;
}
}
có nghĩa là gì cho & Integer.MAX_VALUE? tại sao nên sử dụng toán tử &?
2.Tôi cũng muốn viết Partitioner tùy chỉnh cho IntWritable. Vì vậy, nó là OK và tốt nhất cho key.value% numPartitions trực tiếp?
'&' là một phép toán AND. – Maroun
@MarounMaroun có, tôi biết, vì vậy họ sử dụng hashcode to Và max_value để giữ hashcode bên dưới giá trị max_value? – JoJo
Để giữ cho nó tích cực, bởi vì phân vùng tiêu cực rõ ràng là vô nghĩa. –