2012-04-05 72 views
2

我可以在HBase的配置單元中創建外部表,現在我需要創建一個具有可變列的外部表,這意味着HBase中的列不針對特定表,列的數量並且可以在數據插入時動態創建,應該如何處理這種情況。如何爲hbase創建外部表

總結:如何在HBase表中未修復任何列的情況下在hive中創建外部表。

在此先感謝。

+0

您認爲這樣會怎樣? – 2012-04-06 04:05:50

+1

我得到了一些解決方案,我也會在這裏發佈,這將幫助其他人如果需要 CREATE EXTERNAL TABLE shashwat(key int,value map ) > STORED BY'org.apache.hadoop.hive.hbase。 (「hbase.columns.mapping」=「:key,demo:」)HBaseStorageHandler' > TBLPROPERTIES(「hbase.table.name」=「hbase_shashwat」); – Infinity 2012-04-06 18:44:30

回答

5
  1. 創建表中HBASE殼

    create 'hbase_2_hive_names', 'id', 'name', 'age'

  2. 將數據裝載到HBASE(輸入文件必須在HDFS)

    export HADOOP_CLASSPATH=$(/usr/local/hbase/bin/hbase classpath);$HADOOP_HOME/bin/hadoop jar /usr/local/hbase/hbase-0.94.1.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,id:id,name:fn,name:ln,age:age hbase_2_hive_names /var/data/samples/names.tsv

  3. 創建在蜂房外部表外殼

    CREATE EXTERNAL TABLE hbase_hive_names(hbid INT, id INT, fn STRING, ln STRING, age INT) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,id:id,name:fn,name:ln,age:age") TBLPROPERTIES("hbase.table.name" = "hbase_2_hive_names");