Как "найтиAllBy {Column}" с помощью HbaseTemplate? - PullRequest
0 голосов
/ 21 января 2019

Я разрабатывал свой первый сервер RESTful, используя такие технологии, как Spring и HBase.

Message ниже - базовая модель моего сервера;

@AllArgsConstructor
@Getter
public class Message {

    private final String from;

    private final String to;

    private final long when;

}

Мой сервер должен сохранитьи найти сообщения в HBase.

Я уже провел исследование и прочитал эту документацию: https://docs.spring.io/spring-hadoop/docs/2.5.0.RELEASE/reference/html/springandhadoop-hbase.html#data-access-object-dao-support

Однако этого недостаточно.В учебнике не описывается, как найти по определенному столбцу.

Не могли бы вы предоставить фрагмент кода, который извлекает сообщение из HBase на основе следующего запроса?

SELECT from, to, when FROM Message WHERE to = {userId} OR from = {userId}

1 Ответ

0 голосов
/ 22 января 2019

Ниже приведен пример создания запроса на основе столбцов:

Scan scan = new Scan();
scan.addColumn(HbaseJsonEventSerializer.COLUMFAMILY_FILTERS_BYTES,
                Bytes.toBytes(columnName));
        Filter filter = new SingleColumnValueFilter(HbaseJsonEventSerializer.COLUMFAMILY_FILTERS_BYTES,
                Bytes.toBytes(columnName), CompareOp.EQUAL, Bytes.toBytes(columnValue));
        scan.setFilter(filter);

        List<String> rows  =
        hbaseTemplate.find("searchclicks", scan, new RowMapper<String>() {
            @Override
            public String mapRow(Result result, int rowNum) throws Exception {
                byte[] value = result.getValue(
                        HbaseJsonEventSerializer.COLUMFAMILY_FILTERS_BYTES,
                        Bytes.toBytes(columnName));
                if (value != null) {
                    String facetValue = new String(value);
                    LOG.debug("Facet field: {} and Facet Value: {}",
                            new Object[] { columnName, facetValue });
                }
                return facetValue;
            }
        });

Вы можете обратиться к нему для получения дополнительных примеров:
https://www.programcreek.com/java-api-examples/?code=jaibeermalik/searchanalytics-bigdata/searchanalytics-bigdata-master/src/main/java/org/jai/hbase/HbaseServiceImpl.java

...