我一直在使用Spring和HBase等技术开发我的第一台RESTful服务器。
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}
答案 0 :(得分:1)
下面是一个基于列的查询示例:
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;
}
});