Я пытаюсь удалить строки из таблицы HBase с помощью пакетного сканирования. Когда я запускаю этот код как файл класса, он работает нормально. Но когда я запускаю код как JAR, это дает мне ниже исключения:java.lang.NoSuchMethodError с HBase Scan.setBatch
Исключение в потоке «главный» java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.Scan.setBatch (I) V
Вот мой код:
общественного класса Purge { государственной статической силы основных (String [] арг) бросает 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 Purge «$ стол» «$» столбец «$» временную метку
Извините за путаницу. Я хотел сказать, что когда я запускаю его так, он работает нормально - java Purge «$ table» «$ column» «$ timestamp». Но когда я бегу как банку, это дает мне ошибку. –