2012-09-12 40 views
6

我是hbase的新手。你能告訴我如何將列添加到列家族。我有這樣的數據:如何將列添加到hbase中的列族

{ 
name: abc 
addres: xyz 
} 

我有一個表列測試與列家庭的人。如何將名稱和地址作爲列添加到此人。請在hbase命令行以及java中顯示我。

回答

14

HBase的外殼:

從HBASE殼維基:http://wiki.apache.org/hadoop/Hbase/Shell

將在指定的表/行/列和任選時間戳座標的小區的 '價值'。爲了把一個單元格的值到表「T1」在行「R1」下標有時間「TS1」列「C1」,這樣做:

hbase> put 't1', 'r1', 'c1', 'value', ts1 

這樣的事情在你的情況:

hbase> put 'test', 'yourRow', 'person:name', 'abc' 
hbase> put 'test', 'yourRow', 'person:address', 'xyz' 

在Java:

Configuration config = HBaseConfiguration.create(); 
HTable table = new HTable(config, "test"); 

Put p = new Put(Bytes.toBytes("yourRow")); 
p.add(Bytes.toBytes("person"), Bytes.toBytes("name"), 
    Bytes.toBytes("abc")); 
table.put(p); 
+0

你知道Hbase踩「任何名稱」與任何其他名稱不同嗎?換句話說,這個「:」在hbase中有特殊的含義嗎?或者它只是將整個字符串作爲一個字符串? –

+0

該值規定需要採用以下格式:「」。 是您的列家族中列的名稱,是列家族 –

+0

我可以看到我必須擁有第一個家族列,但是如果我想添加另一列列,如「person:name:firstname」,那麼「名稱:名字」在hbase中被特別對待? –

6

JP債券給你你需要的示例代碼 - 我只是想補充一點,關於HBase的漂亮的事情之一是因爲它是稀疏的(即不保留列空間與行出價值)。此設計決策的一個特點是您可以通過編寫它來創建新列(列族+限定符)。