Hbase多版本插入java Api

Hbase多版本插入java Api,第1张

Hbase多版本插入java Api
参数1,hbase连接,参数2,给定1个rowkey的列表

读取rowkey这个tableR表的rowkey,处理后,存储至tableW这个表。

tableR有多个版本,也要插入进去。注意,hbase不支持list插入(多个版本)

会以rowkey进行自动覆盖

    public static boolean threadInser(Connection hbaseConnection,ArrayList rowKeys){
        try {
            Table tableR = hbaseConnection.getTable(TableName.valueOf("0_library_token"));
            Table tableW = hbaseConnection.getTable(TableName.valueOf("test_library_token"));
            for(String row:rowKeys){
                Get get = new Get(Bytes.toBytes(row)).setMaxVersions(1111111)
                        .addColumn(Bytes.toBytes("F"), Bytes.toBytes("F"));

                Cell[] cells = tableR.get(get).rawCells();
                //List puts = new ArrayList<>();错误方式,血的教训
                for(Cell cell:cells){
                    String jsonstr = Bytes.toString(CellUtil.clonevalue(cell));
                    JSonObject jsonObject = JSONObject.parseObject(jsonstr);
                    String[] hbasePathStrs = jsonObject.getString("path").split("/");
                    String projectVersion = new StringBuffer().append(hbasePathStrs[1]).append("/").append(hbasePathStrs[3]).toString();//消耗少量内存
                    Put put = new Put(row.getBytes()); //指定rowkey
                    put.addColumn("F".getBytes(), "F".getBytes(), projectVersion.getBytes());
                    //puts.add(put);错误方式,血的教训
                    tableW.put(put);//正确方式
                }
                //tableW.put(puts);错误方式,血的教训
            }

            tableR.close();
            tableW.close();
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5679319.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存