HBase Shell的应用案例
电商( eshop)平台具有海量数据、高并发访问、高速读写等特征,适合使用HBase分布式数据库进行数据存储。本节通过一个 HBase在电商平台的应用案例,熟练掌握并综合运用HBase Shell命令行终端提供的各种操作命令。
一、电商(eshop)平台的逻辑数据模型
在HBase创建一个自定义命名空间eshop,用于存放电商平台的用户表shopping(客户商品订单表)。用户表shopping 包括customer、order和 item共三个列族,用逻辑数据模型来表示表中存放的数据。如表1所示:
表1 用逻辑数据模型表示电商系统用户表shopping中存放的数据 | ||||||
行键(RowKey) | 列族:customer | 列族:order | 列族:item | |||
列限定符 | 单元格值 | 列限定符 | 单元格值 | 列限定符 | 单元格值 | |
s001 | name | Jack | number | 1 | item_name | iphone8 |
s001 | phone | 00000000001 | datetime | 2020-4-21 | price | 8000.00 |
s001 | address | WuHan | pay-state | not payed | ||
s001 | level | normal | ||||
s002 | name | Tom | number | 2 | item_name | HAWEI MATE X2 |
s002 | phone | 00000000002 | datetime | 2020-4-22 | price | 6000.00 |
s002 | address | BeiJing | ||||
s002 | preference | e-product | ||||
s003 | name | Mike | number | 3 | item_name | XIAO MI 11 |
s003 | phone | 00000000003 | datetime | 2020-4-23 | price | 5000.00 |
s003 | address | ShangHai | ||||
s003 | age | 20 | ||||
s004 | name | Lucy | number | 4 | item_name | Lancome |
s004 | phone | 00000000004 | datetime | 2020-4-23 | price | 10000.00 |
s004 | address | HangZhou | pay-state | payed | ||
s004 | preference | cosmetics | post-state | recieved | ||
s004 | level | VIP | ||||
s005 | name | Lily | number | 10 | item_name | LV |
s005 | phone | 00000000005 | datetime | 2020-4-23 | price | 20000.00 |
s005 | preference | handbag | pay-state | payed | ||
s005 | level | VIP | post-state | delivered | ||
s005 | abc@qq.com |
二、使用HBase Shell操作电商平台数据
1.对电商平台数据执行简单读写操作
1)创建一个名称为eshop的名字空间,并列出HBase系统所有的名字空间。
hbase:003:0> create_namespace 'eshop'
Took 3.5909 seconds
hbase:004:0> list_namespace
NAMESPACE
default
eshop
hbase
3 row(s)
Took 0.0606 seconds
2)在eshop名字空间中创建表名为shopping的用户表,包含1个列族customer;再列出HBase的所有数据表。
hbase:012:0> create 'eshop:shopping','customer'
2024-03-22 01:33:35,528 INFO [main] client.HBaseAdmin (HBaseAdmin.java:postOperationResult(3591)) - Operation: CREATE, Table Name: eshop:shopping, procId: 216 completed
Created table eshop:shopping
Took 2.5136 seconds
=> Hbase::Table - eshop:shopping
hbase:013:0> list
TABLE
eshop:shopping
1 row(s)
Took 0.0670 seconds
=> ["eshop:shopping"]
3)给eshop 名字空间中的shopping表增加两个新的列族order和 item;再查看其表格结构。
hbase:018:0> alter 'eshop:shopping','order','item'
Updating all regions with the new schema...
1/1 regions updated.
Done.
Took 3.4106 seconds
hbase:019:0> desc 'eshop:shopping'
Table eshop:shopping is ENABLED
eshop:shopping, {TABLE_ATTRIBUTES => {METADATA => {'hbase.store.file-tracker.impl' => 'DEFAULT'
}}}
COLUMN FAMILIES DESCRIPTION
{NAME => 'customer', INDEX_BLOCK_ENCODING => 'NONE', VERSIONS => '1', KEEP_DELETED_CELLS => 'FA
LSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE =
> '0', BLOOMFILTER => 'ROW', IN_MEMORY => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true',BLOCKSIZE => '65536 B (64KB)'} {NAME => 'item', INDEX_BLOCK_ENCODING => 'NONE', VERSIONS => '1', KEEP_DELETED_CELLS => 'FALSE'
, DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0
', BLOOMFILTER => 'ROW', IN_MEMORY => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLO
CKSIZE => '65536 B (64KB)'} {NAME => 'order', INDEX_BLOCK_ENCODING => 'NONE', VERSIONS => '1', KEEP_DELETED_CELLS => 'FALSE
', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '
0', BLOOMFILTER => 'ROW', IN_MEMORY => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BL
OCKSIZE => '65536 B (64KB)'} 3 row(s)
4)先删除 shopping表后再重新创建shopping表,包含3个列族customer,order和 item。
hbase:020:0> disable 'eshop:shopping'
2024-03-22 01:38:46,086 INFO [main] client.HBaseAdmin (HBaseAdmin.java:rpcCall(926)) - Started disable of eshop:shopping
2024-03-22 01:38:46,764 INFO [main] client.HBaseAdmin (HBaseAdmin.java:postOperationResult(3591)) - Operation: DISABLE, Table Name: eshop:shopping, procId: 228 completed
Took 0.7314 seconds
hbase:021:0> drop 'eshop:shopping'
2024-03-22 01:38:58,599 INFO [main] client.HBaseAdmin (HBaseAdmin.java:postOperationResult(3591)) - Operation: DELETE, Table Name: eshop:shopping, procId: 231 completed
Took 0.4091 seconds
hbase:022:0> list
TABLE
0 row(s)
Took 0.0491 seconds
=> []
hbase:023:0> create 'eshop:shopping','customer','order','item'
2024-03-22 01:39:52,129 INFO [main] client.HBaseAdmin (HBaseAdmin.java:postOperationResult(3591)) - Operation: CREATE, Table Name: eshop:shopping, procId: 232 completed
Created table eshop:shopping
Took 2.2332 seconds
=> Hbase::Table - eshop:shopping
5)修改shopping表的表级别属性,将文件大小最大值修改为134217728字节。
hbase:024:0> alter 'eshop:shopping',MAX_FILESIZE=>134217728
Updating all regions with the new schema...
1/1 regions updated.
Done.
Took 2.2104 seconds
6)描述shopping表的列族属性信息。
hbase:025:0> desc 'eshop:shopping'
Table eshop:shopping is ENABLED
eshop:shopping, {TABLE_ATTRIBUTES => {MAX_FILESIZE => '134217728 B (128MB)', METADATA => {'hbas
e.store.file-tracker.impl' => 'DEFAULT'}}}
COLUMN FAMILIES DESCRIPTION
{NAME => 'customer', INDEX_BLOCK_ENCODING => 'NONE', VERSIONS => '1', KEEP_DELETED_CELLS => 'FA
LSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE =
> '0', BLOOMFILTER => 'ROW', IN_MEMORY => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true',BLOCKSIZE => '65536 B (64KB)'} {NAME => 'item', INDEX_BLOCK_ENCODING => 'NONE', VERSIONS => '1', KEEP_DELETED_CELLS => 'FALSE'
, DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0
', BLOOMFILTER => 'ROW', IN_MEMORY => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLO
CKSIZE => '65536 B (64KB)'} {NAME => 'order', INDEX_BLOCK_ENCODING => 'NONE', VERSIONS => '1', KEEP_DELETED_CELLS => 'FALSE
', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '
0', BLOOMFILTER => 'ROW', IN_MEMORY => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BL
OCKSIZE => '65536 B (64KB)'} 3 row(s)
Quota is disabled
Took 0.0846 seconds
7)将用户表shopping逻辑数据模型中的所有数据写入到shooping表中。
hbase:026:0> put 'eshop:shopping','s001','customer:name','Jack'
Took 0.6497 seconds
hbase:027:0> put 'eshop:shopping','s001','customer:phone','00000000001'
Took 0.0513 seconds
hbase:028:0> put 'eshop:shopping','s001','customer:address','WuHan'
Took 0.0231 seconds
hbase:029:0> put 'eshop:shopping','s001','customer:level','normal'
Took 0.0139 seconds
hbase:030:0> put 'eshop:shopping','s001','order:number','1'
Took 0.0282 seconds
hbase:031:0> put 'eshop:shopping','s001','order:datetime','2020-4-21'
Took 0.0488 seconds
hbase:032:0> put 'eshop:shopping','s001','order:pay-state','not-payed'
Took 0.0215 seconds
hbase:033:0> put 'eshop:shopping','s001','item:item_name','iphone8'
Took 0.0396 seconds
hbase:034:0> put 'eshop:shopping','s001','item:price','8000.00'
Took 0.0133 seconds
hbase:040:0> put 'eshop:shopping','s002','customer:name','Tom'
Took 0.0170 seconds
hbase:041:0> put 'eshop:shopping','s002','customer:phone','00000000002'
Took 0.0196 seconds
hbase:042:0> put 'eshop:shopping','s002','customer:address','BeiJing'
Took 0.0214 seconds
hbase:043:0> put 'eshop:shopping','s002','customer:preference','e-product'
Took 0.0196 seconds
hbase:044:0> put 'eshop:shopping','s002','order:number','2'
Took 0.0150 seconds
hbase:045:0> put 'eshop:shopping','s002','order:datetime','2020-4-22'
Took 0.0149 seconds
hbase:046:0> put 'eshop:shopping','s002','item:item_name','HUAWEI MATE X2'
Took 0.0471 seconds
hbase:047:0> put 'eshop:shopping','s002','item:price','6000.00'
Took 0.0421 seconds
hbase:053:0> put 'eshop:shopping','s003','customer:name','Mike'
Took 0.0621 seconds
hbase:054:0> put 'eshop:shopping','s003','customer:phone','00000000003'
Took 0.0216 seconds
hbase:055:0> put 'eshop:shopping','s003','customer:address','Shanghai'
Took 0.0172 seconds
hbase:056:0> put 'eshop:shopping','s003','customer:age','20'
Took 0.0390 seconds
hbase:057:0> put 'eshop:shopping','s003','order:number','3'
Took 0.0605 seconds
hbase:058:0> put 'eshop:shopping','s003','order:datetime','2020-4-23'
Took 0.0120 seconds
hbase:059:0> put 'eshop:shopping','s003','item:item_name','XIAO MI 11'
Took 0.0084 seconds
hbase:060:0> put 'eshop:shopping','s003','item:price','5000.00'
Took 0.0207 seconds
hbase:061:0> put 'eshop:shopping','s004','customer:name','Lucy'
Took 0.0157 seconds
hbase:062:0> put 'eshop:shopping','s004','customer:phone','00000000004'
Took 0.0085 seconds
hbase:063:0> put 'eshop:shopping','s004','customer:address','HangZhou'
Took 0.0165 seconds
hbase:064:0> put 'eshop:shopping','s004','customer:preference','cosmetics'
Took 0.0166 seconds
hbase:065:0> put 'eshop:shopping','s004','customer:level','VIP'
Took 0.0113 seconds
hbase:066:0> put 'eshop:shopping','s004','order:number','4'
Took 0.0145 seconds
hbase:067:0> put 'eshop:shopping','s004','order:datetime','202-4-23'
Took 0.0300 seconds
hbase:068:0> put 'eshop:shopping','s004','order:pay-state','payed'
Took 0.0086 seconds
hbase:069:0> put 'eshop:shopping','s004','order:post_state','recieved'
Took 0.0148 seconds
hbase:070:0> put 'eshop:shopping','s004','item:item_name','Lancome'
Took 0.0251 seconds
hbase:071:0> put 'eshop:shopping','s004','item:price','10000.00'
Took 0.0289 seconds
hbase:072:0> put 'eshop:shopping','s005','customer:name','Lily'
Took 0.0249 seconds
hbase:073:0> put 'eshop:shopping','s005','customer:phone','00000000005'
Took 0.0286 seconds
hbase:074:0> put 'eshop:shopping','s005','customer:preference','handbag'
Took 0.0263 seconds
hbase:075:0> put 'eshop:shopping','s005','customer:level','VIP'
Took 0.0178 seconds
hbase:076:0> put 'eshop:shopping','s005','customer:email','abc@qq.com'
Took 0.0237 seconds
hbase:077:0> put 'eshop:shopping','s005','order:number','10'
Took 0.0098 seconds
hbase:078:0> put 'eshop:shopping','s005','order:datetime','2020-4-23'
Took 0.0211 seconds
hbase:079:0> put 'eshop:shopping','s005','order:pay-state','payed'
Took 0.0245 seconds
hbase:080:0> put 'eshop:shopping','s005','order:post-state','delivered'
Took 0.0256 seconds
hbase:081:0> put 'eshop:shopping','s005','item:item_name','LV'
Took 0.0258 seconds
hbase:082:0> put 'eshop:shopping','s005','item:price','20000.00'
Took 0.0199 seconds
8)对shopping表进行全表扫描(读取所有数据行的所有数据列单元格)。
hbase:084:0> scan 'eshop:shopping'
ROW COLUMN+CELL s001 column=customer:address, timestamp=2024-03-22T01:53:27.728, value=WuHan s001 column=customer:level, timestamp=2024-03-22T01:54:02.171, value=normal s001 column=customer:name, timestamp=2024-03-22T02:01:27.551, value=Jack s001 column=customer:phone, timestamp=2024-03-22T01:52:48.474, value=00000000001 s001 column=item:item_name, timestamp=2024-03-22T01:57:17.558, value=iphone8 s001 column=item:price, timestamp=2024-03-22T01:57:36.270, value=8000.00 s001 column=order:datetime, timestamp=2024-03-22T01:56:12.975, value=2020-4-21 s001 column=order:number, timestamp=2024-03-22T01:55:44.843, value=1 s001 column=order:pay-state, timestamp=2024-03-22T01:56:41.609, value=not-payed s002 column=customer:address, timestamp=2024-03-22T02:03:43.489, value=BeiJing s002 column=customer:name, timestamp=2024-03-22T02:02:58.983, value=Tom s002 column=customer:phone, timestamp=2024-03-22T02:03:20.715, value=00000000002 s002 column=customer:preference, timestamp=2024-03-22T02:04:05.414, value=e-product s002 column=item:item_name, timestamp=2024-03-22T02:05:43.969, value=HUAWEI MATE X2 s002 column=item:price, timestamp=2024-03-22T02:06:41.294, value=6000.00 s002 column=order:datetime, timestamp=2024-03-22T02:05:05.397, value=2020-4-22 s002 column=order:number, timestamp=2024-03-22T02:04:44.084, value=2 s003 column=customer:address, timestamp=2024-03-22T02:23:25.999, value=Shanghai s003 column=customer:age, timestamp=2024-03-22T02:23:39.768, value=20 s003 column=customer:name, timestamp=2024-03-22T02:22:45.243, value=Mike s003 column=customer:phone, timestamp=2024-03-22T02:23:08.255, value=00000000003 s003 column=item:item_name, timestamp=2024-03-22T02:24:45.930, value=XIAO MI 11 s003 column=item:price, timestamp=2024-03-22T02:25:02.682, value=5000.00 s003 column=order:datetime, timestamp=2024-03-22T02:24:17.560, value=2020-4-23 s003 column=order:number, timestamp=2024-03-22T02:24:00.754, value=3 s004 column=customer:address, timestamp=2024-03-22T02:26:34.380, value=HangZhou s004 column=customer:level, timestamp=2024-03-22T02:27:35.830, value=VIP s004 column=customer:name, timestamp=2024-03-22T02:25:44.580, value=Lucy s004 column=customer:phone, timestamp=2024-03-22T02:26:07.073, value=00000000004 s004 column=customer:preference, timestamp=2024-03-22T02:27:17.408, value=cosmetics s004 column=item:item_name, timestamp=2024-03-22T02:29:59.988, value=Lancome s004 column=item:price, timestamp=2024-03-22T02:30:16.339, value=10000.00 s004 column=order:datetime, timestamp=2024-03-22T02:28:40.420, value=202-4-23 s004 column=order:number, timestamp=2024-03-22T02:28:20.236, value=4 s004 column=order:pay-state, timestamp=2024-03-22T02:28:59.712, value=payed s004 column=order:post_state, timestamp=2024-03-22T02:29:21.588, value=recieved s005 column=customer:email, timestamp=2024-03-22T02:33:56.564, value=abc@qq.com s005 column=customer:level, timestamp=2024-03-22T02:33:34.457, value=VIP s005 column=customer:name, timestamp=2024-03-22T02:31:36.776, value=Lily s005 column=customer:phone, timestamp=2024-03-22T02:32:24.128, value=00000000005 s005 column=customer:preference, timestamp=2024-03-22T02:33:09.550, value=handbag s005 column=item:item_name, timestamp=2024-03-22T02:36:24.703, value=LV s005 column=item:price, timestamp=2024-03-22T02:36:40.468, value=20000.00 s005 column=order:datetime, timestamp=2024-03-22T02:34:45.746, value=2020-4-23 s005 column=order:number, timestamp=2024-03-22T02:34:23.380, value=10 s005 column=order:pay-state, timestamp=2024-03-22T02:35:07.771, value=payed s005 column=order:post-state, timestamp=2024-03-22T02:35:59.275, value=delivered
5 row(s)
Took 0.1527 seconds
9)读取shopping表的行键为s004的所有数据列的单元格值。
hbase:085:0> get 'eshop:shopping','s004'
COLUMN CELL customer:address timestamp=2024-03-22T02:26:34.380, value=HangZhou customer:level timestamp=2024-03-22T02:27:35.830, value=VIP customer:name timestamp=2024-03-22T02:25:44.580, value=Lucy customer:phone timestamp=2024-03-22T02:26:07.073, value=00000000004 customer:preference timestamp=2024-03-22T02:27:17.408, value=cosmetics item:item_name timestamp=2024-03-22T02:29:59.988, value=Lancome item:price timestamp=2024-03-22T02:30:16.339, value=10000.00 order:datetime timestamp=2024-03-22T02:28:40.420, value=202-4-23 order:number timestamp=2024-03-22T02:28:20.236, value=4 order:pay-state timestamp=2024-03-22T02:28:59.712, value=payed order:post_state timestamp=2024-03-22T02:29:21.588, value=recieved
1 row(s)
Took 0.3746 seconds
10)读取shopping表的行键s005,列族customer,列限定符preference 的数据列的单元格值。
hbase:087:0> get 'eshop:shopping','s005','customer:preference'
COLUMN CELL customer:preference timestamp=2024-03-22T02:33:09.550, value=handbag
1 row(s)
Took 0.0361 seconds
2.对电商平台数据执行复杂读写操作
1)修改shopping表的列族属性,将列族order的列族属性VERSIONS修改为3。
hbase:090:0> alter 'eshop:shopping',NAME=>'order',VERSIONS=>3
Updating all regions with the new schema...
1/1 regions updated.
Done.
Took 6.8406 seconds
2)修改shopping 表的列族属性,将列族order的列族属性TTL生存时间修改为1周,压缩模式修改为gz。
hbase:093:0> alter 'eshop:shopping',NAME=>'info',TTL=>60*60*24*7,COMPRESSION=>'gz'
Updating all regions with the new schema...
1/1 regions updated.
Done.
Took 3.3336 seconds
3)将shopping表的行键为s001,列族为order,列限定符为number 的数据列的单元格值依次修改为2和3。
hbase:094:0> put 'eshop:shopping','s001','order:number',2
Took 0.0721 seconds
hbase:095:0> put 'eshop:shopping','s001','order:number',3
Took 0.0368 seconds
4)读取shopping表客户Jack(行键为s001)的订单中商品数量的最近3次的版本值。
hbase:096:0> get 'eshop:shopping','s001',{COLUMN=>'order:number',VERSIONS=>3}
COLUMN CELL order:number timestamp=2024-03-22T02:54:22.959, value=3 order:number timestamp=2024-03-22T02:54:19.466, value=2 order:number timestamp=2024-03-22T01:55:44.843, value=1
1 row(s)
Took 0.1118 seconds
5)对shopping表指定行键范围s002到s004的数据行进行扫描,扫描结果包括第s002行,也包括第s004行。
hbase:098:0> scan 'eshop:shopping',{STARTROW=>'s002',STOPROW=>'s005'}
ROW COLUMN+CELL s002 column=customer:address, timestamp=2024-03-22T02:03:43.489, value=BeiJing s002 column=customer:name, timestamp=2024-03-22T02:02:58.983, value=Tom s002 column=customer:phone, timestamp=2024-03-22T02:03:20.715, value=00000000002 s002 column=customer:preference, timestamp=2024-03-22T02:04:05.414, value=e-product s002 column=item:item_name, timestamp=2024-03-22T02:05:43.969, value=HUAWEI MATE X2 s002 column=item:price, timestamp=2024-03-22T02:06:41.294, value=6000.00 s002 column=order:datetime, timestamp=2024-03-22T02:05:05.397, value=2020-4-22 s002 column=order:number, timestamp=2024-03-22T02:04:44.084, value=2 s003 column=customer:address, timestamp=2024-03-22T02:23:25.999, value=Shanghai s003 column=customer:age, timestamp=2024-03-22T02:23:39.768, value=20 s003 column=customer:name, timestamp=2024-03-22T02:22:45.243, value=Mike s003 column=customer:phone, timestamp=2024-03-22T02:23:08.255, value=00000000003 s003 column=item:item_name, timestamp=2024-03-22T02:24:45.930, value=XIAO MI 11 s003 column=item:price, timestamp=2024-03-22T02:25:02.682, value=5000.00 s003 column=order:datetime, timestamp=2024-03-22T02:24:17.560, value=2020-4-23 s003 column=order:number, timestamp=2024-03-22T02:24:00.754, value=3 s004 column=customer:address, timestamp=2024-03-22T02:26:34.380, value=HangZhou s004 column=customer:level, timestamp=2024-03-22T02:27:35.830, value=VIP s004 column=customer:name, timestamp=2024-03-22T02:25:44.580, value=Lucy s004 column=customer:phone, timestamp=2024-03-22T02:26:07.073, value=00000000004 s004 column=customer:preference, timestamp=2024-03-22T02:27:17.408, value=cosmetics s004 column=item:item_name, timestamp=2024-03-22T02:29:59.988, value=Lancome s004 column=item:price, timestamp=2024-03-22T02:30:16.339, value=10000.00 s004 column=order:datetime, timestamp=2024-03-22T02:28:40.420, value=202-4-23 s004 column=order:number, timestamp=2024-03-22T02:28:20.236, value=4 s004 column=order:pay-state, timestamp=2024-03-22T02:28:59.712, value=payed s004 column=order:post_state, timestamp=2024-03-22T02:29:21.588, value=recieved
3 row(s)
Took 0.2564 seconds
6)对shopping表的列族customer 中的所有数据列进行扫描。
hbase:099:0> scan 'eshop:shopping',{COLUMNS=>'customer'}
ROW COLUMN+CELL s001 column=customer:address, timestamp=2024-03-22T01:53:27.728, value=WuHan s001 column=customer:level, timestamp=2024-03-22T01:54:02.171, value=normal s001 column=customer:name, timestamp=2024-03-22T02:01:27.551, value=Jack s001 column=customer:phone, timestamp=2024-03-22T01:52:48.474, value=00000000001 s002 column=customer:address, timestamp=2024-03-22T02:03:43.489, value=BeiJing s002 column=customer:name, timestamp=2024-03-22T02:02:58.983, value=Tom s002 column=customer:phone, timestamp=2024-03-22T02:03:20.715, value=00000000002 s002 column=customer:preference, timestamp=2024-03-22T02:04:05.414, value=e-product s003 column=customer:address, timestamp=2024-03-22T02:23:25.999, value=Shanghai s003 column=customer:age, timestamp=2024-03-22T02:23:39.768, value=20 s003 column=customer:name, timestamp=2024-03-22T02:22:45.243, value=Mike s003 column=customer:phone, timestamp=2024-03-22T02:23:08.255, value=00000000003 s004 column=customer:address, timestamp=2024-03-22T02:26:34.380, value=HangZhou s004 column=customer:level, timestamp=2024-03-22T02:27:35.830, value=VIP s004 column=customer:name, timestamp=2024-03-22T02:25:44.580, value=Lucy s004 column=customer:phone, timestamp=2024-03-22T02:26:07.073, value=00000000004 s004 column=customer:preference, timestamp=2024-03-22T02:27:17.408, value=cosmetics s005 column=customer:email, timestamp=2024-03-22T02:33:56.564, value=abc@qq.com s005 column=customer:level, timestamp=2024-03-22T02:33:34.457, value=VIP s005 column=customer:name, timestamp=2024-03-22T02:31:36.776, value=Lily s005 column=customer:phone, timestamp=2024-03-22T02:32:24.128, value=00000000005 s005 column=customer:preference, timestamp=2024-03-22T02:33:09.550, value=handbag
5 row(s)
Took 0.0883 seconds
7)对shopping表的列族customer中列名为phone的所有数据列进行扫描。
hbase:100:0> scan 'eshop:shopping',{COLUMNS=>'customer:phone'}
ROW COLUMN+CELL s001 column=customer:phone, timestamp=2024-03-22T01:52:48.474, value=00000000001 s002 column=customer:phone, timestamp=2024-03-22T02:03:20.715, value=00000000002 s003 column=customer:phone, timestamp=2024-03-22T02:23:08.255, value=00000000003 s004 column=customer:phone, timestamp=2024-03-22T02:26:07.073, value=00000000004 s005 column=customer:phone, timestamp=2024-03-22T02:32:24.128, value=00000000005
5 row(s)
Took 0.0275 seconds
8)对shopping表的前3行数据进行扫描。
hbase:101:0> scan 'eshop:shopping',{LIMIT=>3}
ROW COLUMN+CELL s001 column=customer:address, timestamp=2024-03-22T01:53:27.728, value=WuHan s001 column=customer:level, timestamp=2024-03-22T01:54:02.171, value=normal s001 column=customer:name, timestamp=2024-03-22T02:01:27.551, value=Jack s001 column=customer:phone, timestamp=2024-03-22T01:52:48.474, value=00000000001 s001 column=item:item_name, timestamp=2024-03-22T01:57:17.558, value=iphone8 s001 column=item:price, timestamp=2024-03-22T01:57:36.270, value=8000.00 s001 column=order:datetime, timestamp=2024-03-22T01:56:12.975, value=2020-4-21 s001 column=order:number, timestamp=2024-03-22T02:54:22.959, value=3 s001 column=order:pay-state, timestamp=2024-03-22T01:56:41.609, value=not-payed s002 column=customer:address, timestamp=2024-03-22T02:03:43.489, value=BeiJing s002 column=customer:name, timestamp=2024-03-22T02:02:58.983, value=Tom s002 column=customer:phone, timestamp=2024-03-22T02:03:20.715, value=00000000002 s002 column=customer:preference, timestamp=2024-03-22T02:04:05.414, value=e-product s002 column=item:item_name, timestamp=2024-03-22T02:05:43.969, value=HUAWEI MATE X2 s002 column=item:price, timestamp=2024-03-22T02:06:41.294, value=6000.00 s002 column=order:datetime, timestamp=2024-03-22T02:05:05.397, value=2020-4-22 s002 column=order:number, timestamp=2024-03-22T02:04:44.084, value=2 s003 column=customer:address, timestamp=2024-03-22T02:23:25.999, value=Shanghai s003 column=customer:age, timestamp=2024-03-22T02:23:39.768, value=20 s003 column=customer:name, timestamp=2024-03-22T02:22:45.243, value=Mike s003 column=customer:phone, timestamp=2024-03-22T02:23:08.255, value=00000000003 s003 column=item:item_name, timestamp=2024-03-22T02:24:45.930, value=XIAO MI 11 s003 column=item:price, timestamp=2024-03-22T02:25:02.682, value=5000.00 s003 column=order:datetime, timestamp=2024-03-22T02:24:17.560, value=2020-4-23 s003 column=order:number, timestamp=2024-03-22T02:24:00.754, value=3
3 row(s)
Took 0.1883 seconds
9)统计shopping表中的数据行数。
hbase:102:0> count 'eshop:shopping'
5 row(s)
Took 0.1783 seconds
=> 5
10)删除shopping表的行键为s005,列族为customer,列限定符为email的数据列。
hbase:103:0> delete 'eshop:shopping','s005','customer:email'
Took 0.1145 seconds
相关文章:
HBase Shell的应用案例
电商( eshop)平台具有海量数据、高并发访问、高速读写等特征,适合使用HBase分布式数据库进行数据存储。本节通过一个 HBase在电商平台的应用案例,熟练掌握并综合运用HBase Shell命令行终端提供的各种操作命令。 一、电商(eshop)平台的逻辑数据模型 在H…...
Allegro许可管理技巧
在数字化时代,软件许可管理对于企业的运营至关重要。然而,许多企业在实施软件管理过程中会遇到各种问题。Allegro许可管理作为一款高效、合规的管理工具,能够帮助企业解决常见的许可管理问题。本文将深入探讨Allegro许可管理中的实用技巧&…...

34 vue 项目默认暴露出去的 public 文件夹 和 CopyWebpackPlugin
前言 这里说一下 vue.config.js 中的一些 public 文件夹是怎么暴露出去的? 我们常见的 CopyWebpackPlugin 是怎么工作的 ? 这个 也是需要 一点一点积累的, 因为 各种插件 有很多, 不过 我们仅仅需要 明白常见的这些事干什么的即可 当然 以下内容会涉及到一部分vue-cli,…...

Redis 不再“开源”,对中国的影响及应对方案
Redis 不再“开源”,使用双许可证 3 月 20 号,Redis 的 CEO Rowan Trollope 在官网上宣布了《Redis 采用双源许可证》的消息。他表示,今后 Redis 的所有新版本都将使用开源代码可用的许可证,不再使用 BSD 协议,而是采用…...
在CentOS中怎么安装和配置NginxWeb服务器
在CentOS中安装和配置Nginx Web服务器可以通过以下步骤完成: 1. 使用yum安装Nginx: sudo yum install nginx 2. 启动Nginx服务: sudo systemctl start nginx 3. 设置Nginx开机自启动: sudo systemctl enable nginx 4. 配置防火墙规…...
使用docker搭建Fluentd的教程
使用Docker搭建Fluentd的教程 步骤 1: 拉取Fluentd镜像 首先,需要从Docker Hub上拉取Fluentd的官方镜像: docker pull fluent/fluentd:v1.14-debian-1这里使用的是基于Debian的Fluentd 1.14版本的镜像,可以根据需要选择其他版本。 步骤 2…...
Python的re模块进行正则表达式操作时的常用方法[回顾学习]
re 模块是 Python 中用于处理正则表达式的标准库模块。通过 re 模块,可进行字符串匹配、搜索和替换等各种操作。 有几个常用的方法:# re.match(pattern, string):从字符串开头开始匹配模式,并返回匹配对象。适合用于确定字符串是否…...

Rust之构建命令行程序(五):环境变量
开发环境 Windows 11Rust 1.77.0 VS Code 1.87.2 项目工程 这次创建了新的工程minigrep. 使用环境变量 我们将通过添加一个额外的功能来改进minigrep:一个不区分大小写的搜索选项,用户可以通过环境变量打开该选项。我们可以将此功能设置为命令行选项,…...

ARMday7
VID_20240322_203313 1.思维导图 2.main.c #include"key_inc.h" //封装延时函数 void delay(int ms) {int i,j;for(i0;i<ms;i){for(j0;j<2000;j){}} } int main() {//按键中断的初始化key1_it_config();key2_it_config();key3_it_config();while(1){printf(&q…...
Ubuntu中安装VSCode的一个指令
问题描述 本来想去VSCode官网上下载软件包,然后双击使用Ubuntu Software安装的,但是安装老不成功。 想用命令行指令dpkg进行安装,虽然能成功,但是后续使用 code . 命令打开VSCode又报错说找不到命令。 解决方式 在命令行中使用…...
生活电子产品拆解分析~汇总目录
一、锂电池电源 ①电子产品拆解分析-暖手宝 ②电子产品拆解分析-电动牙刷 ③电子产品拆解分析-充电宝台灯 ④电子产品拆解分析-太阳能自动感应灯 ⑤电子产品拆解分析-人体感应灯 ⑥电子产品拆解分析-食物电子秤 ⑦电子产品拆解分析-6600mA充电宝 ⑨电子产品拆解分析-触摸化妆镜…...

Tkinter 一文读懂
Tkinter 简介 Tkinter(即 tk interface,简称“Tk”)本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python 官方推荐的 GUI 工具包,属于 Python 自带的标准库模块,当您安装好 Python 后,就可…...

2核4G服务器阿里云性能测评和优惠价格表
阿里云2核4G服务器租用优惠价格,轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月,活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图: 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…...

Day41:WEB攻防-ASP应用HTTP.SYS短文件文件解析Access注入数据库泄漏
目录 ASP-默认安装-MDB数据库泄漏下载 ASP-中间件-CVE&短文件&解析&写权限 HTTP.SYS(CVE-2015-1635)主要用作蓝屏破坏,跟权限不挂钩 IIS短文件(iis全版本都可能有这个问题) IIS文件解析 IIS写权限 ASP-SQL注入-SQLMAP使用…...

什么是单点登录?
单点登录(Single Sign On,简称 SSO)简单来说就是用户只需在一处登录,不用在其他多系统环境下重复登录。用户的一次登录就能得到其他所有系统的信任。 为什么需要单点登录 单点登录在大型网站应用频繁,比如阿里旗下有淘…...

elasticsearch的数据搜索
DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户…...
云原生相关概念(小白版)
先说概念: 云原生应该是一种“建立在云上的多种效率提升技术的复合体"(而不是单一的技术创新),主要就是在云技术摆脱物理储存限制的基础上,进一步实现应用的专业优化(即文章里说的按功能切分…...

Dell戴尔XPS 12 9250二合一笔记本电脑原装出厂Windows10系统包下载
链接:https://pan.baidu.com/s/1rqUEM_q5DznF0om6eevcwg?pwdvij0 提取码:vij0 戴尔原厂WIN10系统自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志、系统属性专属LOGO标志、Office办公软件、MyDell等预装程序 文件格式:esd/wim/sw…...

YOLOv5改进 | 图像去雾 | 利用图像去雾网络AOD-PONO-Net网络增改进图像物体检测(全网独家首发)
一、本文介绍 本文给大家带来的改进机制是利用AODNet图像去雾网络结合PONO机制实现二次增强,我将该网络结合YOLOv5针对图像进行去雾检测(也适用于一些模糊场景,图片不清晰的检测),同时本文的内容不影响其它的模块改进可以作为工作量凑近大家的论文里,非常的适用,图像去…...

代码随想录算法训练营Day55 ||leetCode 583. 两个字符串的删除操作 || 72. 编辑距离
583. 两个字符串的删除操作 这道题的状态方程比上一题简单一些 初始化如下 class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() 1, vector<int>(word2.size() 1));for (int i 0; i < word1…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...