Java 如何";findAllBy{Column}”一词;用HbaseTemplate?

Java 如何";findAllBy{Column}”一词;用HbaseTemplate?,java,hadoop,spring-data,hbase,spring-data-hadoop,Java,Hadoop,Spring Data,Hbase,Spring Data Hadoop,我一直在利用Spring和HBase等技术开发我的第一台RESTful服务器 Message下面是我的服务器的核心模型 @AllArgsConstructor @Getter public class Message { private final String from; private final String to; private final long when; } 我的服务器应该在HBase中保存和查找邮件 我已经进行了研究并阅读了以下文档: 然而,

我一直在利用Spring和HBase等技术开发我的第一台RESTful服务器

Message
下面是我的服务器的核心模型

@AllArgsConstructor
@Getter
public class Message {

    private final String from;

    private final String to;

    private final long when;

}
我的服务器应该在HBase中保存和查找邮件

我已经进行了研究并阅读了以下文档:

然而,这还不够。本教程不公开如何按特定列查找

能否提供一个代码段,根据以下查询从HBase检索消息

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

下面给出了一个基于列的查询示例:

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;
            }
        });
Scan扫描=新扫描();
scan.addColumn(HbaseJsonEventSerializer.COLUMFAMILY_FILTERS_字节,
字节。toBytes(columnName));
Filter Filter=新的SingleColumnValueFilter(HbaseJsonEventSerializer.columnFamily\u FILTERS\u字节,
Bytes.toBytes(columnName)、CompareOp.EQUAL、Bytes.toBytes(columnValue));
scan.setFilter(filter);
列出行=
hbaseTemplate.find(“searchclicks”、扫描、新建行映射器(){
@凌驾
公共字符串mapRow(Result-Result,int-rowNum)引发异常{
字节[]值=result.getValue(
HbaseJsonEventSerializer.COLUMFAMILY_FILTERS_字节,
字节。toBytes(columnName));
if(值!=null){
String facetValue=新字符串(值);
debug(“Facet字段:{}和Facet值:{}”,
新对象[]{columnName,facetValue});
}
返回值;
}
});
有关更多示例,请参考此示例: