更新Hbase的数据:
01.数据准备
先查看原始Hbase里面的数据情况
hbase(main):012:0> scan "Gadaite"
ROW COLUMN+CELL
001 column=F1:F11, timestamp=1649858571999, value=F1.F11
001 column=F1:F12, timestamp=1649858578171, value=F1.F12
001 column=F1:_0, timestamp=1649858592283, value=
001 column=F2:F21, timestamp=1649858584519, value=F2.F21
001 column=F2:F22, timestamp=1649858592283, value=F2.F22
002 column=F1:F11, timestamp=1649858599071, value=G1.G11
002 column=F1:F12, timestamp=1649858606288, value=G1.G12
002 column=F1:_0, timestamp=1649858619587, value=
002 column=F2:F21, timestamp=1649858613258, value=G2.G21
002 column=F2:F22, timestamp=1649858619587, value=G2.G22
2 row(s)
Took 0.0368 seconds
02.使用phoenix在dbeaver上连接Hbase写sql操作
02.1.插入数据
与标准sql的insert不同,这里是使用upsert
查询结果,同时hbase shell也更新了:
UPSERT INTO "Gadaite"("rowkey",F11,F12,F21,F22) VALUES('003','B11','B1.B12','B2.B21','B2.B22');
SELECT * FROM "Gadaite" ;
hbase对比发现之前数据的时间戳timestamp并没有发生变化的
hbase(main):013:0> scan "Gadaite"
ROW COLUMN+CELL
001 column=F1:F11, timestamp=1649858571999, value=F1.F11
001 column=F1:F12, timestamp=1649858578171, value=F1.F12
001 column=F1:_0, timestamp=1649858592283, value=
001 column=F2:F21, timestamp=1649858584519, value=F2.F21
001 column=F2:F22, timestamp=1649858592283, value=F2.F22
002 column=F1:F11, timestamp=1649858599071, value=G1.G11
002 column=F1:F12, timestamp=1649858606288, value=G1.G12
002 column=F1:_0, timestamp=1649858619587, value=
002 column=F2:F21, timestamp=1649858613258, value=G2.G21
002 column=F2:F22, timestamp=1649858619587, value=G2.G22
003 column=F1:F11, timestamp=1649861421663, value=B11
003 column=F1:F12, timestamp=1649861421663, value=B1.B12
003 column=F1:_0, timestamp=1649861421663, value=x
003 column=F2:F21, timestamp=1649861421663, value=B2.B21
003 column=F2:F22, timestamp=1649861421663, value=B2.B22
3 row(s)
02.2.更新数据
Phoenix中不存在update的语法关键字,而还是upsert ,功能上替代了Insert+update
UPSERT INTO "Gadaite" ("rowkey" ,F11) VALUES ('003','BBA');
SELECT * FROM "Gadaite" ;
输出结果:
同时,hbase shell中更新过的时间戳会发生改变,该条数据未更新字段的时间戳则不会发生改变
hbase(main):015:0> scan "Gadaite"
ROW COLUMN+CELL
001 column=F1:F11, timestamp=1649858571999, value=F1.F11
001 column=F1:F12, timestamp=1649858578171, value=F1.F12
001 column=F1:_0, timestamp=1649858592283, value=
001 column=F2:F21, timestamp=1649858584519, value=F2.F21
001 column=F2:F22, timestamp=1649858592283, value=F2.F22
002 column=F1:F11, timestamp=1649858599071, value=G1.G11
002 column=F1:F12, timestamp=1649858606288, value=G1.G12
002 column=F1:_0, timestamp=1649858619587, value=
002 column=F2:F21, timestamp=1649858613258, value=G2.G21
002 column=F2:F22, timestamp=1649858619587, value=G2.G22
003 column=F1:F11, timestamp=1649862440389, value=BBA
003 column=F1:F12, timestamp=1649861421663, value=B1.B12
003 column=F1:_0, timestamp=1649862440389, value=x
003 column=F2:F21, timestamp=1649861421663, value=B2.B21
003 column=F2:F22, timestamp=1649861421663, value=B2.B22
3 row(s)
Took 0.0228 seconds
02.3.删除数据
DELETE FROM "Gadaite" WHERE "rowkey" = '001';
SELECT * FROM "Gadaite" ;
输出结果:
同时hbase shell对应数据也进行删除,剩下数据的时间戳却是没有发生变化的
hbase(main):016:0> scan "Gadaite"
ROW COLUMN+CELL
002 column=F1:F11, timestamp=1649858599071, value=G1.G11
002 column=F1:F12, timestamp=1649858606288, value=G1.G12
002 column=F1:_0, timestamp=1649858619587, value=
002 column=F2:F21, timestamp=1649858613258, value=G2.G21
002 column=F2:F22, timestamp=1649858619587, value=G2.G22
003 column=F1:F11, timestamp=1649862440389, value=BBA
003 column=F1:F12, timestamp=1649861421663, value=B1.B12
003 column=F1:_0, timestamp=1649862440389, value=x
003 column=F2:F21, timestamp=1649861421663, value=B2.B21
003 column=F2:F22, timestamp=1649861421663, value=B2.B22
2 row(s)
Took 0.0330 seconds