HBase过滤器的使用

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~
https://blog.csdn.net/xiaoduan_/article/details/80921034

HBase过滤器的使用

HBase中几种常用的过滤器

示例代码

import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.filter.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.Test;

import java.util.Arrays;

import static org.apache.hadoop.hbase.util.Bytes.toBytes;

/**
 * @ Description:
 * @ Date: Created in 15:12 04/07/2018
 * @ Author: Anthony_Duan
 */
public class HBaseFilterTest {

    @Test
    public void createTable(){
        HbaseUtil.createTable("FileTable",new String []{"fileInfo","saveInfo"});
    }


    @Test
    public void addFileDetails() {
        HbaseUtil.putRow("FileTable", "rowkey1", "fileInfo", "name", "file1.txt");
        HbaseUtil.putRow("FileTable", "rowkey1", "fileInfo", "type", "txt");
        HbaseUtil.putRow("FileTable", "rowkey1", "fileInfo", "size", "1024");
        HbaseUtil.putRow("FileTable", "rowkey1", "saveInfo", "creator", "jixin");
        HbaseUtil.putRow("FileTable", "rowkey2", "fileInfo", "name", "file2.jpg");
        HbaseUtil.putRow("FileTable", "rowkey2", "fileInfo", "type", "jpg");
        HbaseUtil.putRow("FileTable", "rowkey2", "fileInfo", "size", "1024");
        HbaseUtil.putRow("FileTable", "rowkey2", "saveInfo", "creator", "jixin");
        HbaseUtil.putRow("FileTable", "rowkey3", "fileInfo", "name", "file3.jpg");
        HbaseUtil.putRow("FileTable", "rowkey3", "fileInfo", "type", "jpg");
        HbaseUtil.putRow("FileTable", "rowkey3", "fileInfo", "size", "1024");
        HbaseUtil.putRow("FileTable", "rowkey3", "saveInfo", "creator", "jixin");

    }


    @Test
    public void rowFilterTest(){

        Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new BinaryComparator("rowkey1".getBytes()));

        FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL,Arrays.asList(filter));

        ResultScanner scanner =
                HbaseUtil.getScanner("FileTable","rowkey1","rowkey3",filterList);

        if (scanner != null){
            scanner.forEach(result -> {
                System.out.println("rowkey="+ Bytes.toString(result.getRow())); //注意这里不能携程result.getRow().toString()这里打印出来的会是一个地址
                System.out.println("fileName=" +
                        Bytes.toString(result.getValue(toBytes("fileInfo"),"name".getBytes())));//Bytes.toBytes() 可以替换为.getBytes()
            });
            scanner.close();  //关闭资源 Closes the scanner and releases any resources it has allocated
        }

    }

    /**
     * 筛选出具有特定前缀行键的数据
     */
    @Test
    public void prefixFilterTest(){

        Filter filter = new PrefixFilter(toBytes("rowkey2"));
        FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL, Arrays.asList(filter));
        ResultScanner resultScanner =
                HbaseUtil.getScanner("FileTable", "rowkey1","rowkey3",filterList);
        if (resultScanner != null){
            resultScanner.forEach(result -> {
                System.out.println("rowkey=" + Bytes.toString(result.getRow()));
                System.out.println("fileName=" + Bytes.toString(result.getValue(toBytes("fileInfo"), Bytes.toBytes("name"))));
            });
            resultScanner.close();
        }
    }

    /**
     *
     * 只返回每行的行键,值为空
     */
    @Test
    public void keyOnlyFilterTest(){

        Filter filter = new KeyOnlyFilter(true);
        FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL,Arrays.asList(filter));

        ResultScanner resultScanner= HbaseUtil.getScanner("FileTable", "rowkey1", "rowkey3", filterList);

        if (resultScanner != null) {
            resultScanner.forEach(result -> {
                System.out.println("rowkey=" + Bytes.toString(result.getRow()));
                System.out.println("fileName=" + Bytes
                        .toString(result.getValue(toBytes("fileInfo"), toBytes("name"))));
            });

            resultScanner.close();
        }
    }

    /**
     * 按照列名前缀筛选单元格
     */
    @Test
    public void columnPrefixFilterTest() {
        Filter filter = new ColumnPrefixFilter(Bytes.toBytes("nam"));
        FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL, Arrays.asList(filter));
        ResultScanner scanner = HbaseUtil
                .getScanner("FileTable", "rowkey1", "rowkey3", filterList);

        if (scanner != null) {
            scanner.forEach(result -> {
                System.out.println("rowkey=" + Bytes.toString(result.getRow()));
                System.out.println("fileName=" + Bytes
                        .toString(result.getValue(Bytes.toBytes("fileInfo"), Bytes.toBytes("name"))));
                System.out.println("fileType=" + Bytes
                        .toString(result.getValue(Bytes.toBytes("fileInfo"), Bytes.toBytes("type"))));
            });
            scanner.close();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/xiaoduan_/article/details/80921034