W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在 HBase 中有四個(gè)主要的數(shù)據(jù)模型操作,分別是:Get、Put、Scan 和 Delete。
Get 指定行的返回屬性。讀取通過 Table.get 執(zhí)行。
Get 操作的語法如下所示:
get ’<table name>’,’row1’
在以下的 get 命令示例中,我們掃描了 emp 表的第一行:
hbase(main):012:0> get 'emp', '1'
COLUMN CELL
personal : city timestamp=1417521848375, value=hyderabad
personal : name timestamp=1417521785385, value=ramu
professional: designation timestamp=1417521885277, value=manager
professional: salary timestamp=1417521903862, value=50000
4 row(s) in 0.0270 seconds
下面給出的是使用 get 操作讀取指定列語法:
hbase>get 'table name', ‘rowid’, {COLUMN => ‘column family:column name ’}
在下面給出的示例表示用于讀取 HBase 表中的特定列:
hbase(main):015:0> get 'emp', 'row1', {COLUMN=>'personal:name'}
COLUMN CELL
personal:name timestamp=1418035791555, value=raju
1 row(s) in 0.0080 seconds
Put 可以將新行添加到表中(如果該項(xiàng)是新的)或者可以更新現(xiàn)有行(如果該項(xiàng)已經(jīng)存在)。Put 操作通過 Table.put(non-writeBuffer)或 Table.batch(non-writeBuffer)執(zhí)行。
Put 操作的命令如下所示,在該語法中,你需要注明新值:
put ‘table name’,’row ’,'Column family:column name',’new value’
新給定的值將替換現(xiàn)有的值,并更新該行。
假設(shè) HBase 中有一個(gè)表 EMP 擁有下列數(shù)據(jù):
hbase(main):003:0> scan 'emp'
ROW COLUMN+CELL
row1 column=personal:name, timestamp=1418051555, value=raju
row1 column=personal:city, timestamp=1418275907, value=Hyderabad
row1 column=professional:designation, timestamp=14180555,value=manager
row1 column=professional:salary, timestamp=1418035791555,value=50000
1 row(s) in 0.0100 seconds
以下命令將員工名為“raju”的城市值更新為“Delhi”:
hbase(main):002:0> put 'emp','row1','personal:city','Delhi'
0 row(s) in 0.0400 seconds
更新后的表如下所示:
hbase(main):003:0> scan 'emp'
ROW COLUMN+CELL
row1 column=personal:name, timestamp=1418035791555, value=raju
row1 column=personal:city, timestamp=1418274645907, value=Delhi
row1 column=professional:designation, timestamp=141857555,value=manager
row1 column=professional:salary, timestamp=1418039555, value=50000
1 row(s) in 0.0100 seconds
Scan 允許在多個(gè)行上對(duì)指定屬性進(jìn)行迭代。
Scan 操作的語法如下:
scan ‘<table name>’
以下是掃描表格實(shí)例的示例。假定表中有帶有鍵 "row1 "、 "row2 "、 "row3 " 的行,然后是具有鍵“abc1”,“abc2”和“abc3”的另一組行。以下示例顯示如何設(shè)置Scan實(shí)例以返回以“row”開頭的行。
public static final byte[] CF = "cf".getBytes();
public static final byte[] ATTR = "attr".getBytes();
...
Table table = ... // instantiate a Table instance
Scan scan = new Scan();
scan.addColumn(CF, ATTR);
scan.setRowPrefixFilter(Bytes.toBytes("row"));
ResultScanner rs = table.getScanner(scan);
try {
for (Result r = rs.next(); r != null; r = rs.next()) {
// process result...
}
} finally {
rs.close(); // always close the ResultScanner!
}
請(qǐng)注意,通常,指定掃描的特定停止點(diǎn)的最簡(jiǎn)單方法是使用 InclusiveStopFilter 類。
Delete 操作用于從表中刪除一行。Delete 通過 Table.delete 執(zhí)行。
HBase 不會(huì)修改數(shù)據(jù),因此通過創(chuàng)建名為 tombstones 的新標(biāo)記來處理 Delete 操作。這些 tombstones,以及沒用的價(jià)值,都在重大的壓實(shí)中清理干凈。
使用 Delete 命令的語法如下:
delete ‘<table name>’, ‘<row>’, ‘<column name >’, ‘<time stamp>’
下面是一個(gè)刪除特定單元格的例子:
hbase(main):006:0> delete 'emp', '1', 'personal data:city',
1417521848375
0 row(s) in 0.0060 seconds
使用 “deleteall” 命令,可以刪除一行中所有單元格。下面給出是 deleteall 命令的語法:
deleteall ‘<table name>’, ‘<row>’,
這里是使用“deleteall”命令刪除 emp 表 row1 的所有單元的一個(gè)例子。
hbase(main):007:0> deleteall 'emp','1'
0 row(s) in 0.0240 seconds
使用 Scan 命令驗(yàn)證表。表被刪除后的快照如下:
hbase(main):022:0> scan 'emp'
ROW COLUMN+CELL
2 column=personal data:city, timestamp=1417524574905, value=chennai
2 column=personal data:name, timestamp=1417524556125, value=ravi
2 column=professional data:designation, timestamp=1417524204, value=sr:engg
2 column=professional data:salary, timestamp=1417524604221, value=30000
3 column=personal data:city, timestamp=1417524681780, value=delhi
3 column=personal data:name, timestamp=1417524672067, value=rajesh
3 column=professional data:designation, timestamp=1417523187, value=jr:engg
3 column=professional data:salary, timestamp=1417524702514, value=25000
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: