2014-04-14 53 views
0

我在Postgres有一個表,但現在我應該實現Hbase作爲後端數據庫,所以我想將下表移動到Hbase,如何重新設計這張桌子?我對Hbase很新穎。我在Postgres有一個表,我想將它移動到Hbase

id  geom   osm_id   name   type 
1 00003381C75CBE6443 24254755 Millenium Hall  office 
2 00003382D5B5D76S3G ... 
... 
+0

可能重複[如何將Postgres中的錶轉換爲Hbase?](http://stackoverflow.com/questions/23039830/how-to-transformredesign-the-table-in-postgres-into- HBase的) –

回答

-1

您需要在hbase中使用一個列名創建一個表,並且所有列都將成爲該列族的一部分。

您的ID將成爲hbase中的rowkey。

hbase(main):002:0> create 'hbaseTable', 'column1' 
0 row(s) in 1.2620 seconds 

hbase(main):003:0> 

其中hbaseTable是你的名字空間,column1是你的表名。 然後,您可以使用thrift/native hbase API將數據保存在hbase表中。

Configuration conf = HBaseConfiguration.create(); 
HTableInterface table = new HTable(conf, "hbaseTable".getBytes()); 

Put put = new Put(1.getBytes());// for id 1. 
put.add("column1".getBytes(), "geom".getBytes(), 00003381C75CBE6443.getBytes()); 
put.add("column1".getBytes(), "osm_id".getBytes(), 24254755.getBytes()); 
put.add("column1".getBytes(), "name".getBytes(), Millenium Hall.getBytes()); 
put.add("column1".getBytes(), "type".getBytes(), office.getBytes()); 

puts.add(put);// same can do for other ids as well. 


hTable.put(puts); 
0

如果你只是想從Postgres的移動已經存在的表數據HBase的,節省一些時間和使用sqoop。否則,如果您想手動執行此操作,那麼由於hbase沒有在創建表時明確定義列的概念,並且它將數據存儲在ByteArray中,所以可以使用put命令作爲put 'table_name','1', 'colfam:geom','00003381C75CBE6443'。同樣,爲每一列做。

相關問題