ошибка при получении данных из hbase - PullRequest
0 голосов
/ 01 мая 2018

У меня есть некоторые конкретные данные в таблице HBase, которая содержит большое количество данных и 1000 регионов.

Когда я запрашиваю эти данные из оболочки, при обычном сканировании по имени столбца требуется 175 секунд. Но то же самое, что я пытался получить, используя префиксный фильтр в своем Java-коде, я получаю ошибку тайм-аута.

Может кто-нибудь иметь представление, почему это произошло и как я могу получить данные из моей базовой таблицы?

Пожалуйста, найдите код, который я использую

@Override
public Scan getScanForRowRange(List rowKeys, List columnList) {
    try {
        List rowrangeList = new ArrayList<>();
        for (String rowKey : rowKeys) {
            byte[] startRow = Bytes.toBytes(rowKey);
            byte[] endRow = new byte[startRow.length + 1];
            System.arraycopy(startRow, 0, endRow, 0, startRow.length);
            endRow[startRow.length] = (byte) 255;
            RowRange rowRange = new RowRange(startRow, true, endRow, false);
            rowrangeList.add(rowRange);
        }
        logger.info("row range size" + rowrangeList.size());
        Scan scan = new Scan();
        for (String columnName : columnList) {
            if (columnName.contains(ForesightConstants.COLON)) {
                String cellValues[] = columnName.split(ForesightConstants.COLON);
                scan.addColumn(Bytes.toBytes(cellValues[ForesightConstants.ZERO]), Bytes.toBytes(cellValues[ForesightConstants.ONE]));
            }
        }
        scan.setFilter(new MultiRowRangeFilter(rowrangeList));
        scan.setCacheBlocks(true);
        scan.setCaching(10);
        return scan;
    } catch (IOException e) {
        logger.info("Exception Inside @Method getScanForRowRange }", Utils.getStackTrace(e));
    }
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...