java實現Hbase多條件組合查詢 (Filter方式)

    /**
 * 通過多條件聯合查詢
 *
 * @param tablename
 * @param arr
 * @return
 * @throws IOException
 */
public List queryByFilter(String tablename, List<String> arr)
        throws IOException {
    HTablePool hTablePool = HBaseUtil.getHTablePool();
    HTableInterface hti = hTablePool.getTable(tablename);
    FilterList filterList = new FilterList();
    Scan s1 = new Scan();
    for (String v : arr) {
        String[] s = v.split(",");
        SubstringComparator comp = new SubstringComparator(s[2]);
        filterList.addFilter(new SingleColumnValueFilter(Bytes.toBytes(s[0]),
                        Bytes.toBytes(s[1]), CompareOp.EQUAL, comp));
        /*
         * filterList.addFilter(new SingleColumnValueFilter(Bytes
         * .toBytes("familyName"), Bytes.toBytes("colName"), CompareOp.EQUAL,
         * Bytes.toBytes("8010")));
         */
    }
    PageFilter pageFilter = new PageFilter(this.querySize);
    filterList.addFilter(pageFilter);
    s1.setFilter(filterList);
    ResultScanner ResultScannerFilterList = hti.getScanner(s1);
    SimpleDateFormat fmt = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss:SSS");
    System.out.println("hbase 查詢結束:" + fmt.format(new Date()));
    List<HadoopTclCjrzBean> queryList = new ArrayList<HadoopTclCjrzBean>();
    for (Result rr = ResultScannerFilterList.next(); rr != null; rr = ResultScannerFilterList
            .next()) {
         for (KeyValue kv : rr.list()) {
            System.out.println("row  : " + new String(kv.getRow()));
            System.out.println("column : "
                    + new String(kv.getKey(), "UTF-8"));
            System.out.println("屬性名:  "
                    + new String(kv.getQualifier(), "UTF-8"));
            System.out.println("value  : "
                    + new String(kv.getValue(), "UTF-8"));
            System.out.println("Family :" + new String(kv.getFamily())
                    + ":");
            System.out.println("Timestamp  :"
                    + String.valueOf(kv.getTimestamp()) + "");
 
        }
        }
 
        queryList.add(getBean(rr, null));
 
    }
    return queryList;
}

轉載於:https://my.oschina.net/DavidTio/blog/181437

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章