Hive 和 HBase 的快速入門
即使是有一些正式的文檔,構建以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()本文地址:http://www.oschina.net/translate/hive-hbase-quickstart
原文地址:http://chase-seibert.github.io/blog/2013/05/10/hive-hbase-quickstart.html
</div>本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!