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)