我正在嘗試第一次編寫自定義比較器。其中我需要將兩個值傳遞給此比較器。一個是需要比較的價值,另一個是我需要編寫比較邏輯的標準。下面是相同的代碼:Hbase通過自定義比較器的值
public class IdComparator extends WritableByteArrayComparable {
private String criteria;
static final Log LOG = LogFactory.getLog(IdComparator.class);
public IdComparator(){
//NoOp
}
public IdComparator(byte[] value,byte[] criteria){
super(value);
this.criteria = new String(criteria);
}
public String getCriteria(){
return this.criteria;
}
@Override
public int compareTo(byte[] value, int offset, int length) {
String csv_CBC = new String(value, offset, length);
LOG.info("IdComparator :: csv :: "+csv);
byte[] bytesToCompare = this.getValue();
LOG.info("IdComparator :: csv :: "+new String(bytesToCompare) + " criteria :: "+getCriteria());
//filtering logic goes here
return result;
}
}
現在,當我把這種比較器過濾,並通過一些值
new SingleColumnFilter(....,
new IdComparator(Bytes.toBytes("1234"),Bytes.toBytes("1")));
在記錄我得到的值作爲測試,但是這是1是第二值沒有被打印和打印爲空。下面是我在日誌了:
IdComparator :: csv :: 56783,44445,56664,97633
IdComparator :: csv :: 1234 criteria :: null
這是1234將被傳遞給超類的第一個值WritableByteArrayComparable和另一種是「1」,同樣的,我將使用比較邏輯,設置只有這個類。有什麼我失蹤或我需要添加?任何幫助將高度appriciated。