1. 程式人生 > >資料分析引擎-Hive

資料分析引擎-Hive

什麼是Hive,並且Hive解決了什麼問題

當資料非常多的時候,比如我們用幾千個節點,甚至幾萬個節點來儲存我們的資料,通過這些資料,分析出我們想要的結果,比如生成天級別,周級別,月級別甚至年級別的報表。

如果用mysql,或者是oracle,都太慢了!!

而Hive是構建在Hadoop之上的資料倉庫,它主要用來訪問和管理資料,同時也提供了類sql的查詢語言,它的獨特之處,在於它可以處理超大規模的資料,可擴充套件性和容錯性都非常強。

兩個概念:OLAP和OLTP

OLAP:OnLine Analytical Processing。
要做到OLAP系統的分析,需要有極快的相應速度,實時的資料更新。而Hive都不具備。
OLTP:OnLine Transaction Processing。
Hive對事物的支援很弱,所以它不支援OLTP。
Hive的表達能力有限,不支援迭代式計算,並且一些複雜運算,不好用sql進行表達。

Hive內在執行原理

1,HQL中對查詢語句的解釋,優化,以及生成查詢計劃,都是由Hive完成的。
2,所有的資料都是儲存在hadoop中。
3,HQL最終都會生成mapreducer任務,進行分散式的執行。

hive原理

Hive常用的HQL例項

create table if not exists employees (
name STRING,
salary FLOAT,
subordinates ARRAY<STRING>,
address STRUCT<street:STRING, city:STRING, state:STRING, zip:INT>
)
row format delimited
fields terminated by '\001'
create/drop/alter database;
create/drop/truncate table;
alter table/patition/column;
create/drop/alter index;
create/drop function;
show;
describe;
create/drop/grant/revoke roles and privileges;