概述
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;
}
}
最后
以上就是甜美绿草为你收集整理的hbase的操作总结hbase的数据模型:hbase的基本操作java操作hbase的简单案例的全部内容,希望文章能够帮你解决hbase的操作总结hbase的数据模型:hbase的基本操作java操作hbase的简单案例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复