hbase的操作总结

hbase的数据模型:

**Map(table):这个map中的每一对key-value称之为row <**
	'kissjiang'(rowkey)这个map中的每一对key-value称之为column ->map <
		'字段名'(称之为column family) -> map(这个map的每一对key-value称之为version->value) ....
		'字段名:abc'(abc称之为column qualifier) -> map ...  

hbase的基本操作

1.连接到hbase
hbase shell
2.list
list 列出hbase的表
list_namespace 列出有哪些namespace
3.scan
scan ‘表名’ 扫描表的数据
scan ‘表名’ {LIMIT => 3} 查看三行数据
4.put
put ‘表名’, ‘rowkey名字’, ‘字段名’,‘值’
put ‘namespace:表名’, rowkey名字’’, ‘字段名’,‘值’
5.get
拿到的数据是最新的数据
get ‘表名’,‘raykey’,‘字段名(列名)’ 这个获取的是最新的那一条数据
get ‘表名’,‘raykey’,‘字段名(列名)’ ,{COLUMN => ‘字段名’,VERSIONS => 10} VERSIONS的意思是获取到前十个版本的数据
或者:
get ‘namespace:表名’ …
6.删除表
disable ‘表名’
drop ‘表名’
7.创建表
create ‘表名’,‘列名’,‘列名’ …
create ‘表名’,{NAME => ‘字段名’},{NAME => ‘字段名’} …
create ‘namespace:表名’,{NAME => ‘字段名’},{NAME => ‘字段名’} …
create ‘表名’,{NAME => ‘字段名’},{NAME => ‘字段名’, VERSIONS => 10} VERSIONS 保存这个字段的10个版本,默认是一个版本
create ‘namespace:表名’,{NAME => ‘字段名’},{NAME => ‘字段名’, VERSIONS => 1},{NAME => ‘字段名’, TTL => 5}
备注:column(字段名)一定要尽量的小,不然会很占用空间,一般都是一个单词来命名
8.namespace
create_namespace ‘jrq’
9.desc
desc ‘表名’ 查看表的结构信息
10.TTL(Time To Live)
create ‘表名’,{NAME => ‘字段名’},{NAME => ‘字段名’, VERSIONS => 10},{NAME => ‘字段名’, TTL => 5} TTL:5秒过后这下面的值就会被清除掉
11.alter
修改字段的配置
alter ‘表名’,{NAME => ‘字段名’, TTL => 3} 重设这个字段的TTL
VERSIONS 同理
12.delete
delete ‘表名’,‘rowkey名’,‘字段名’
备注:
不是真正的删,只是记录一下,你已经删除了,当你查询的时候就不会展示给你了,只有当数据压缩的时候才会真正的删除掉
13.flush
flush ‘表名’ 将内存中的数据写到磁盘去

java操作hbase的简单案例

依赖的jar包

<dependencies>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-shaded-client</artifactId>
            <version>1.2.6</version>
        </dependency>
    </dependencies>
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Table;
import java.io.IOException;
// 在这之前,先创建好表
public class HBaseClientTest {
    public static void main(String[] args) throws IOException {
        // 构建配置
        Configuration configuration = HBaseConfiguration.create();
        // 设置zk的配置
        configuration.set("hbase.zookeeper.quorum", "master,slave1,slave2");

        //注意需要设置java的版本为8
        // 创建一个连接
        try(Connection connection = ConnectionFactory.createConnection(configuration)) {
            // 操作这个表
            Table table = connection.getTable(TableName.valueOf("表名"));

            // 批量写入hbase
            table.put(DataGenerator.getPuts(10));
        }

    }
}

另一个java文件代码:

import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;



public class DataGenerator {
    private static List<String> baseRowKeys = Arrays.asList("随机的rowkey1", "随机的rowkey2");

    private static String getRowKey(int index) {
        return baseRowKeys.get(index % 2);
    }

    public static List<Put> getPuts(int num) {

        List<Put> list = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            String rowKey = getRowKey(i);  // 从上面的key中随机的取一个
            // put 是hbase里的 Put 需要转成二进制的
            // 这个保证每一个rowkey是唯一的  实际的话可以直接写
            Put put = new Put(Bytes.toBytes(rowKey + "-" + i + "-" + System.currentTimeMillis()));
            // 增加一个行里的字段(列)
            put.addColumn(Bytes.toBytes("column family"), null, Bytes.toBytes("值"));
            // 这个看数据结构图   所有的都需要转成二进制
            put.addColumn(Bytes.toBytes("column family"), Bytes.toBytes("column qualifier"), Bytes.toBytes("值"));
            /// ...... 可以add多个
            list.add(put);
        }
        return list;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值