我在Postgres有一個表,但現在我應該實現Hbase作爲後端數據庫,所以我想將下表移動到Hbase,如何重新設計這張桌子?我對Hbase很新穎。我在Postgres有一個表,我想將它移動到Hbase
id geom osm_id name type
1 00003381C75CBE6443 24254755 Millenium Hall office
2 00003382D5B5D76S3G ...
...
我在Postgres有一個表,但現在我應該實現Hbase作爲後端數據庫,所以我想將下表移動到Hbase,如何重新設計這張桌子?我對Hbase很新穎。我在Postgres有一個表,我想將它移動到Hbase
id geom osm_id name type
1 00003381C75CBE6443 24254755 Millenium Hall office
2 00003382D5B5D76S3G ...
...
您需要在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);
如果你只是想從Postgres的移動已經存在的表數據HBase的,節省一些時間和使用sqoop。否則,如果您想手動執行此操作,那麼由於hbase沒有在創建表時明確定義列的概念,並且它將數據存儲在ByteArray中,所以可以使用put命令作爲put 'table_name','1', 'colfam:geom','00003381C75CBE6443'
。同樣,爲每一列做。
可能重複[如何將Postgres中的錶轉換爲Hbase?](http://stackoverflow.com/questions/23039830/how-to-transformredesign-the-table-in-postgres-into- HBase的) –