HBase 实战案例二之 ​​get​​ 命令

1. ​​get​​ 命令

​get​​​命令是用来获取​​Hbase​​表中某行的数据

2. 实战案例

在笔者的 ​​hbase​​ 集群中,有一个表 ​​ns_ct:calllog​​,在开发过程中,我们不能随便使用​​scan [tablename]​​ 去获取数据,因为这样会导致扫描整张表。是一个I/O密集型操作。但是在不知道 该表的 行键时 且表数据 较少时,我们可以用​​scan​​ 获取全部数据,研究其 ​​rowKey​​ ,然后再通过​​get​​命令获取每行的数据。

于是,我们可以这么操作:

hbase(main):025:0> scan 'ns_ct:calllog'
ROW COLUMN+CELL
00_13320266126_20181211184057_18283449398_1_2248 column=f1:build_time, timestamp=1545119528780, value=2018-12-11 18:40:57
00_13320266126_20181211184057_18283449398_1_2248 column=f1:build_time_ts, timestamp=1545119528780, value=1544524857000
00_13320266126_20181211184057_18283449398_1_2248 column=f1:call1, timestamp=1545119528780, value=13320266126
···
04_18907263863_20180127054024_13653454072_1_2799 column=f1:build_time, timestamp=1545119528759, value=2018-01-27 05:40:24
04_18907263863_20180127054024_13653454072_1_2799 column=f1:build_time_ts, timestamp=1545119528759, value=1517002824000
04_18907263863_20180127054024_13653454072_1_2799 column=f1:call1, timestamp=1545119528759, value=18907263863
04_18907263863_20180127054024_13653454072_1_2799 column=f1:call2, timestamp=1545119528759, value=13653454072
04_18907263863_20180127054024_13653454072_1_2799 column=f1:duration, timestamp=1545119528759, value=2799
04_18907263863_20180127054024_13653454072_1_2799 column=f1:flag, timestamp=1545119528759, value=1
05_18283449398_20180521033943_14218140347_1_395 column=f1:build_time_ts, timestamp=1545119528742, value=1526845183000
05_18283449398_20180521033943_14218140347_1_395 column=f1:call1, timestamp=1545119528742, value=18283449398
05_18283449398_20180521033943_14218140347_1_395 column=f1:call2, timestamp=1545119528742, value=14218140347
05_18283449398_20180521033943_14218140347_1_395 column=f1:duration, timestamp=1545119528742, value=395
05_18283449398_20180521033943_14218140347_1_395 column=f1:flag, timestamp=1545119528742, value=1
19 row(s) in 0.2410 seconds

随便选取一个 ​​rowKey​​,然后使用如下命令获取每行的数据:

hbase(main):031:0> get 'ns_ct:calllog', '04_18907263863_20180127054024_13653454072_1_2799' 
COLUMN CELL
f1:build_time timestamp=1545119528759, value=2018-01-27 05:40:24
f1:build_time_ts timestamp=1545119528759, value=1517002824000
f1:call1 timestamp=1545119528759, value=18907263863
f1:call2 timestamp=1545119528759, value=13653454072
f1:duration timestamp=1545119528759, value=2799
f1:flag timestamp=1545119528759, value=1
1 row(s) in 0.0450 seconds

可以看到,在 表​​calllog​​​ 中,有一个列族​​f1​​​。 ​​rowKey=04_18907263863_20180127054024_13653454072_1_2799​​ 行的数据中包括列:

build_time   
build_time_ts
call1
call2
duration
flag

其存储的 ​​timestamp​​​ 是写入到hbase 表时的时间戳;​​value​​​ 则是这个列在这个​​timestamp​​时所对应的值。