HBase addColumn addColumns 兩個函數的deprecated解決方法
HBase addColumn addColumns 兩個函數的deprecated解決方法
用HBase0.90.4版本,又用ITHBase,ITHBase稱自己支持 HBase0.90版本的,但是有一些error和warning,error的解決方法在前一篇文章二級索引安裝配置裏說過了。而很多的warning都跟addColumn(), addColumns()這兩個函數有關,大體意思就是你最好別用addColumns(byte[][])和addColumn(byte)了,要用addColumn(byte[],byte[])代替.
如何處理,舉例如下
1.addColumn(byte[]):
byte[] column = ...
之前:
indexScan.addColumn(column);
修改爲:
byte [][] fq = KeyValue.parseColumn(column);
if (fq.length > 1 && fq[1] != null && fq[1].length > 0) {
indexScan.addColumn(fq[0], fq[1]);
} else {
indexScan.addFamily(fq[0]);
}
2.addColumns(byte[][]):
Scan indexScan = new Scan();
allIndexColumns = new byte[indexColumns.length + 1][];
//todo: change the following one line to several lines after it......
之前:
indexScan.addColumns(allIndexColumns);
改爲:
for (byte[] column : allIndexColumns) {
byte [][] fq = KeyValue.parseColumn(column);
if (fq.length > 1 && fq[1] != null && fq[1].length > 0) {
indexScan.addColumn(fq[0], fq[1]);
} else {
indexScan.addFamily(fq[0]);
}
}
主要在幾個函數裏,其中兩個函數爲:
public Result[] next(final int nbRows) throws IOException {
public ResultScanner getIndexedScanner(final String indexId, final byte[] indexStartRow, final byte[] indexStopRow,
final byte[][] indexColumns, final Filter indexFilter, final byte[][] baseColumns)
用HBase0.90.4版本,又用ITHBase,ITHBase稱自己支持 HBase0.90版本的,但是有一些error和warning,error的解決方法在前一篇文章二級索引安裝配置裏說過了。而很多的warning都跟addColumn(), addColumns()這兩個函數有關,大體意思就是你最好別用addColumns(byte[][])和addColumn(byte)了,要用addColumn(byte[],byte[])代替.
如何處理,舉例如下
1.addColumn(byte[]):
byte[] column = ...
之前:
indexScan.addColumn(column);
修改爲:
byte [][] fq = KeyValue.parseColumn(column);
if (fq.length > 1 && fq[1] != null && fq[1].length > 0) {
indexScan.addColumn(fq[0], fq[1]);
} else {
indexScan.addFamily(fq[0]);
}
2.addColumns(byte[][]):
Scan indexScan = new Scan();
allIndexColumns = new byte[indexColumns.length + 1][];
//todo: change the following one line to several lines after it......
之前:
indexScan.addColumns(allIndexColumns);
改爲:
for (byte[] column : allIndexColumns) {
byte [][] fq = KeyValue.parseColumn(column);
if (fq.length > 1 && fq[1] != null && fq[1].length > 0) {
indexScan.addColumn(fq[0], fq[1]);
} else {
indexScan.addFamily(fq[0]);
}
}
主要在幾個函數裏,其中兩個函數爲:
public Result[] next(final int nbRows) throws IOException {
public ResultScanner getIndexedScanner(final String indexId, final byte[] indexStartRow, final byte[] indexStopRow,
final byte[][] indexColumns, final Filter indexFilter, final byte[][] baseColumns)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.