参数1,hbase连接,参数2,给定1个rowkey的列表
读取rowkey这个tableR表的rowkey,处理后,存储至tableW这个表。
tableR有多个版本,也要插入进去。注意,hbase不支持list插入(多个版本)
会以rowkey进行自动覆盖
public static boolean threadInser(Connection hbaseConnection,ArrayListrowKeys){ 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; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)