Я начал использовать библиотеку Async HBase. Я пытаюсь использовать TableInputFormat. Мне не нужны все строки для моей задачи «Уменьшить карту», поэтому я изменил код, указав регулярное выражение для объекта сканера в TableRecordReader.Сложное регулярное выражение с asyc HBase Scanner
String regEx=getRegEx(conf); //my function to calculate the regular expression based on the input given in the conf object
System.out.println("RegEx = "+regEx);
scanner.setKeyRegexp(regEx);
В основном я просто добавить ключ нужных строк в регулярном выражении с OR (|
). Это работает, когда я хочу получить несколько сотен строк. В некоторых сценариях мое регулярное выражение очень длинное (около 600 000), когда я хочу получить больше строк. Но в этом случае сканер перестает работать.
Я знаю, что фильтрация строк строк на основе регулярного выражения выполняется на стороне сервера, и сложное регулярное выражение может не работать.
- Итак, что можно сделать, чтобы сканер извлек только нужные строки?
- Эффективно ли использовать несколько сканеров, чтобы каждому можно было предоставить часть регулярного выражения?
- Или эффективно использовать один сканер для получения всех строк, а затем итерации по ним для требуемых строк?.
FYI: Общее количество строк в моем столе будет в диапазоне десятков миллионов.