欢迎投稿

今日深度:

Hbase基本操作,

Hbase基本操作,


首先:
            conf = HBaseConfiguration.create();
            conf.set("hbase.zookeeper.property.clientPort", "2181");
            conf.set("hbase.zookeeper.quorum", "集群地址");
            conf.set("hbase.master", "地址+端口");
            conn = HConnectionManager.createConnection(conf);
            admin = new HBaseAdmin(conf);
 
 
插入  Put (更新同理)------------------------------------------------------
插入单条记录
String tablename = "proreply";
            String row = rowFixd;
            String columnFamily = "data";
            String[] columns = new String[] { "content", "rusername", "ctime" };
            String[] values = new String[] { "回复内容:........", "lxk",
                    DateFormatUtils.format(new Date(), "yyyy-mm-dd HH:mm:ss.ms") };
            HTableInterface table = null;
try {
                table = conn.getTable(tablename);
                Put put = new Put(Bytes.toBytes(row));
                for (int i = 0; i < columns.length; i++) {
                    put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(String.valueOf(columns[i])),
                            values[i] == null ? null : values[i].getBytes("utf-8"));
                    table.put(put);
                }
                System.out.println("======插入记录完成======");
插入多条记录
//             table.setAutoFlush(false);
//             table.setWriteBufferSize(6 * 1024 * 1024);
            if (null != rowDatas && rowDatas.size() > 0) {
                for (RowData rowData : rowDatas) {
                    String row = rowData.getRow();
                    String[] columns = rowData.getColumns();
                    String columnFamily = rowData.getColumnFamily();
                    String[] values = rowData.getValues();
                    Put put = new Put(Bytes.toBytes(row));
                    for (int i = 0; i < columns.length; i++) {
                        put.add(Bytes.toBytes(columnFamily),
                                Bytes.toBytes(String.valueOf(columns[i])),
                                values[i] == null ? null : values[i]
                                        .getBytes("utf-8"));
                        put.setDurability(Durability.SKIP_WAL);
                        table.put(put);
//                         puts.add(put);
                    }
                }
//                 table.put(puts);
                // table.batch(puts);
//                 table.flushCommits();
 
删除-----------------------------------------------------------------------
 
        HTableInterface htable = conn.getTable("reguser".getBytes());
        Delete del = new Delete(Bytes.toBytes("chenzhenjian1448850414722"));
        del.compareTo(del);
        htable.delete(del);
 
查询-----------------------------------------------------------------------
查询所有记录
 
    HTableInterface htable = conn.getTable("表名".getBytes());
            Scan scan = new Scan();
            ResultScanner scanner = htable.getScanner(scan);
 
            for (Result result : scanner) {
                byte[] row = result.getRow();
                List<KeyValue> list = result.list();
 
                for (KeyValue keyValue : list) {
                    System.out.print("行键:" + new String(row));
                    System.out.print("\t列簇:" + new String(keyValue.getFamily()));
                    System.out.print("\t列名:" + new String(keyValue.getQualifier()));
                    System.out.print("\t时间:" + keyValue.getTimestamp());
                    System.out.println("\t列值:" + new String(keyValue.getValue()));
                }
            }
 
查询一行记录
Get g = new Get(rowKey.getBytes());
Result rs = table.get(g);
KeyValue[] raw = rs.raw();
Map<String, String> result = new HashMap<String, String>();
for (int i = 0; i < raw.length; i++) {
                byte[] row = raw[i].getRow();
                result.put("row", new String(row));
                byte[] family = raw[i].getFamily();
                byte[] qualifier = raw[i].getQualifier();
                byte[] value = raw[i].getValue();
                result.put(new String(family) + ":" + new String(qualifier),
                        new String(value));
            }
            return result;
查询过滤条件---------------------------------------------------------------------------
 
提取rowkey以[prefix]前缀开头
Filter filter=new RowFilter(CompareFilter.CompareOp.EQUAL, new BinaryPrefixComparator(prefix.getBytes()));
Scan s=new Scan();
        s.setFilter(filter);
 
提取rowkey以[endfix]结尾
Filter filter=new RowFilter(CompareFilter.CompareOp.EQUAL,  new RegexStringComparator(".*"+endfix+"$"));
Scan s=new Scan();
        s.setFilter(filter);
 
提取rowkey以包含[value]
Filter filter=new RowFilter(CompareFilter.CompareOp.EQUAL,  new SubstringComparator(value));
Scan s=new Scan();
        s.setFilter(filter);
 
提取rowkey以[prefix]前缀开头、并且只包含rowkey、
Filter filter1=new RowFilter(CompareFilter.CompareOp.EQUAL, new BinaryPrefixComparator(prefix.getBytes()));
KeyOnlyFilter filter2=new KeyOnlyFilter();
FilterList filtList =new FilterList(FilterList.Operator.MUST_PASS_ALL);
filtList.addFilter(filter1);
filtList.addFilter(filter2);
Scan s=new Scan();
        s.setFilter(filtList);
 
分页提取10条:rowkey以[prefix]前缀开头、
Filter filter1=new RowFilter(CompareFilter.CompareOp.EQUAL, new BinaryPrefixComparator(prefix.getBytes()));
PageFilter filter2=new PageFilter(10);
FilterList filtList =new FilterList(FilterList.Operator.MUST_PASS_ALL);
filtList.addFilter(filter1);
filtList.addFilter(filter2);
Scan s=new Scan();
s.setFilter(filtList);
 
分页提取10条:仅获取data列族上某列上大于某时间戳的数据
PageFilter filter=new PageFilter(10);
Scan s=new Scan();
s.addColumn("data".getBytes(), colmnName.getBytes());
s.setFilter(filter);
if(0!=minStamp)
s.setTimeRange(minStamp, Long.MAX_VALUE);
return s;
 
分页提取10条:大于某时间戳的数据(针对所有列)
PageFilter filter=new PageFilter(10);
Scan s=new Scan();
s.setFilter(filter);
if(0!=minStamp)
s.setTimeRange(minStamp, Long.MAX_VALUE);
return s;
 

www.htsjk.Com true http://www.htsjk.com/hbase/39430.html NewsArticle Hbase基本操作, 首先:             conf = HBaseConfiguration.create();             conf.set("hbase.zookeeper.property.clientPort", "2181");             conf.set("hbase.zookeeper.quorum", "集群地址");          ...
相关文章
    暂无相关文章
评论暂时关闭