搜索
您的当前位置:首页HBase 过滤器 Java API

HBase 过滤器 Java API

来源:乌哈旅游

HBase 过滤器 Java API

在IDEA中导入Maven依赖

    <dependencies>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>1.4.6</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>1.4.6</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
        </dependency>
    </dependencies>

批量插入学生表stu数据

    @Test
    /**
     *  创建stu表,增加一个info列簇,将students.txt的1000条数据全部插入
     */ public void PutStu() throws IOException {
   
        TableName stu = TableName.valueOf("stu");
        // 创建表
        Admin admin = conn.getAdmin();
        if (!admin.tableExists(stu)) {
   
            admin.createTable(new HTableDescriptor(stu).addFamily(new HColumnDescriptor("info")));
        }
        Table stuTable = conn.getTable(stu);
        ArrayList<Put> puts = new ArrayList<>();
        // 读取文件
        BufferedReader br = new BufferedReader(new FileReader("data/students.txt"));
        int cnt = 0;
        String line;
        while ((line = br.readLine()) != null) {
   
            String[] split = line.split(",");
            String id = split[0];
            String name = split[1];
            String age = split[2];
            String gender = split[3];
            String clazz = split[4];

            Put put = new Put(id.getBytes());
            put.addColumn("info".getBytes(),"name".getBytes(),name.getBytes());
            put.addColumn("info".getBytes(),"age".getBytes(),age.getBytes());
            put.addColumn("info".getBytes(),"gender".getBytes(),gender.getBytes());
            put.addColumn("info".getBytes(),"clazz".getBytes(),clazz.getBytes());

            // 批量插入
            puts.add(put);
            cnt += 1;
            if (cnt == 100) {
   
                stuTable.put(puts);
                puts.clear(); // 清空
                cnt = 0;
            }
            // 逐条插入,效率低
//            stuTable.put(put);
        }
        // 判断Put的List是否为空
        if (!puts.isEmpty()) {
   
            stuTable.put(puts);
        }
        br.close();
    }

代码封装

定义全局变量

    // 定义全局变量
    Connection conn;
    Table stu;

定义全局方法 执行扫描操作

    // 定义全局方法
    // 执行扫描操作
    public ResultScanner getScannerWithFilter(Filter filter) throws IOException {
   
        Scan scan = new Scan();
        scan.setFilter(filter);
        return stu.getScanner(scan);
    }

遍历扫描的数据 (所有行)

    // 遍历扫描的数据(所有行)
    public void printScanner(Filter filter) throws IOException {
   
        for (Result rs : getScannerWithFilter(filter)) {
   
            String rk = Bytes.toString(rs.getRow(

因篇幅问题不能全部显示,请点此查看更多更全内容

Top