我試圖使用批量掃描從HBase表中刪除行。當我將此代碼作爲類文件運行時,它運行良好。但是,當我將代碼作爲JAR運行時,它給出了以下例外:帶HBase的java.lang.NoSuchMethodError Scan.setBatch
線程「main」中的異常java.lang.NoSuchMethodError:org.apache.hadoop.hbase.client.Scan.setBatch(I)V
這是我的代碼:
公共類吹掃{ 公共靜態無效的主要(字串[] args)拋出IOException異常,InterruptedException的{
if (args.length != 3) {
System.out.println("Incorrect number of arguments");
System.out.println("Correct Usage: java Purge <table> <column name> <value>");
System.out.println("Exiting .....");
System.exit(0);
}
String tablename = args[0];
String column = args[1];
String value = args[2];
Configuration conf = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(conf);
Table table = connection.getTable(TableName.valueOf(tablename));
List<Delete> deleteList = new ArrayList<Delete>();
Scan scan = new Scan();
scan.setBatch(100);
scan.addColumn(Bytes.toBytes("cf1"),Bytes.toBytes(column));
Filter filter = new ValueFilter(CompareFilter.CompareOp.LESS_OR_EQUAL,new BinaryComparator(Bytes.toBytes(value)));
scan.setFilter(filter);
ResultScanner scanner=table.getScanner(scan);
for (Result rr : scanner) {
Delete d=new Delete(rr.getRow());
deleteList.add(d);
}
table.delete(deleteList);
}
}
我使用以下命令行:
HADOOP_CLASSPATH = hbase mapredcp
Hadoop的罐子purge.jar清理「$表」,「$欄」,「$時間戳」
很抱歉的混亂。我想說的是,當我像這樣運行它時,它工作正常 - java清除「$ table」「$ column」「$ timestamp」。但是當我作爲一個罐子運行時,它給我錯誤。 –