Hive 和 HBase 的快速入門

jopen 11年前發布 | 22K 次閱讀 HBase NoSQL數據庫

即使是有一些正式的文檔,構建以HBase為后端的Hive仍然是多少需要一些技巧的。希望這份手冊能讓你入門快一些。本文假定你已經安裝好HBase,如果沒有,參考我寫的另一篇文章 HBase 快速入門

注: 這些方法是用于開發環境的,例如,其中并沒有用到HDFS。關于產品部署的完整手冊,參考 CDH4 指南

Linux

sudo apt-get install hive

創建Hive的默認數據存儲目錄

sudo mkdir -p /user/hive/warehouse sudo chown -R myusername:myusername /user/hive/warehouse/

copy HBase JARs into the Hive lib

sudo cp /usr/share/hbase/hbase-0.92.1.jar /usr/lib/hive/lib sudo cp /usr/share/hadoop-zookeeper/zookeeper-3.4.3.jar /usr/lib/hive/lib</pre>

OSX

brew install hive

連接到HBase

現在你可以使用hive命令啟動hive,在后端的HBase上創建一張表。例子中的表名為test,有一個叫values的整數的列簇(Cloumn Family)。注意對表的刪除/創建只會影響Hive的元數據;并沒有真正在HBase生效。

DROP TABLE IF EXISTS test;

CREATE EXTERNAL TABLE test(key string, values map<string, int>) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ( "hbase.columns.mapping" = ":key,values:" ) TBLPROPERTIES ( "hbase.table.name" = "test" );

SELECT * FROM test;

>c4ca4-0000001-79879483-000000000124-000000000000000000000000000025607621 {'comments':0, 'likes':0} >c4ca4-0000001-79879483-000000000124-000000000000000000000000000025607622 {'comments':0, 'likes':0}</pre>

簡單的Map Reduce例子

假設表中有上面給出的裸數據,下面是一個使用GROUP/SUM的map reduce例子,用來匯總values列簇的不同列。這個例子創建了一個view,用于劃分并處理HBase的rowkey。你可以用INSERT OVERWRITE語句將結果寫回到Hbase。

CREATE VIEW
    test_view AS
SELECT
    substr(key, 0, 36) as org_date_asset_prefix,
    split(key, '-')[2] as inverse_date_str,
    stats['comments'] as comments,
    stats['likes'] as likes
FROM
    test;

SELECT org_date_asset_prefix, map( 'comments', SUM(comments), 'likes', SUM(likes) ) as stats FROM test_view GROUP BY org_date_asset_prefix;</pre>

Thrift REST API

如果你想用thrift連接Hive,你可以用hive --service hiveserver啟動thrift服務。Hiver 是一個不錯的Python API的輕量級包裝。

import hiver
client = hiver.connect(host, port)
client.execute('SHOW TABLES')
rows = client.fetchAll()
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!