2015-05-08 39 views
6

作爲開發人員,我使用sqoop job從現有MySQL表導入數據,爲我們的項目創建了HBase表。問題是我們的數據分析團隊熟悉MySQL語法,意味着他們可以輕鬆查詢HIVE表。對他們來說,我需要暴露HIVE中的HBase表。我不想通過在HIVE中重新填充數據來複制數據。此外,複製數據將來可能會存在一致性問題。如何訪問Hive中的HBase表,反之亦然?

我可以在HIVE 中公開HBase表而不復制數據?如果是的話,我該怎麼做?另外,如果我的HBase表中的數據在我的HBE表中更新後的數據出現在HIVE中沒有任何問題?

有時,我們的數據分析團隊會在HIVE中創建表格並填充數據。我可以將它們暴露給HBase嗎?如果是,如何?

回答

6

HBase的蜂巢集成:

創建在蜂巢的HBase的表中的external table可以查詢HBase的數據O在蜂巢中查詢,而不需要複製數據。您可以更新或刪除HBase表中的數據,也可以在Hive中查看修改後的表。

例子:

考慮你有列idnameemail的HBase的表。爲蜂巢

樣品外部表的命令:

CREATE EXTERNAL TABLE hivehbasetable(key INT, id INT, username STRING, password STRING, email STRING) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,id:id,name:username,name:password,email:email") TBLPROPERTIES("hbase.table.name" = "hbasetable"); 

有關蜂房HBase的整合看here

+0

什麼反轉的更多信息?我有HIVE表並將它暴露給HBase? – Abhishek

+0

@Abhishek只要您寫入HBaseStorageHandler存儲的HIVE表,表和它所支持的數據將存儲在HBase中。您的團隊可以像在HIVE和INSERT ... SELECT ...中一樣創建許多HBase存儲的表(不包括外部表),一旦查詢結束,數據將立即在HBase中可用。嘗試一下。 –

+0

明白了..謝謝:) – Abhishek

相關問題