Ошибка при получении данных из hbase

У меня есть некоторые конкретные данные в таблице 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;
}

Не могли бы вы добавить свой код?

Erik 01.05.2018 14:42

Убедитесь, что ваша оболочка имеет более высокое значение тайм-аута, установленного для свойства hbase.client.scanner.timeout.period, вы можете попробовать увеличить это значение с 60000 по умолчанию до 180000 и попробовать свой Java-код.

mbaxi 02.05.2018 08:29

max, я пробовал данные фильтра диапазона строк, идут сейчас, но на это уходит много времени, можете ли вы понять причину, по которой это происходит

Tanmay Agrawal 02.05.2018 09:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
46
0

Другие вопросы по теме