招聘崗位上到處都要求熟練的Hive究竟是何方神圣?

簡介

????Hive是基于Hadoop的數(shù)據(jù)倉庫大數(shù)據(jù)組件。將易上手的SQL語句轉(zhuǎn)化成MapReduce作業(yè)

數(shù)據(jù)結(jié)構(gòu)

  1. 元數(shù)據(jù)
    Hive存儲的是一張張的數(shù)據(jù)表,而元數(shù)據(jù)就是其中的表結(jié)構(gòu)
    存儲形式:存于Derby數(shù)據(jù)庫,或MySQL,Oracle數(shù)據(jù)庫。

  2. 表數(shù)據(jù)
    表中存儲的數(shù)據(jù)。
    存儲形式:每張表存于HDFS中的一個目錄中

數(shù)據(jù)類型

  • 基本數(shù)據(jù)類型
    • tinyint / smallint / int / bigint : 整數(shù)類型
    • float / double : 浮點數(shù)類型
    • boolean : 布爾類型
    • string : 字符串類型
  • 復(fù)雜數(shù)據(jù)類型
    • Array : 數(shù)組類型
    • Map : 集合類型,鍵值對Key / Value形式
    • Struct : 結(jié)構(gòu)類型,包含不同數(shù)據(jù)類型的元素,跟C語言中的Struct類似
  • 時間數(shù)據(jù)類型
    • Date : 只包含到天的數(shù)據(jù),沒法精確到時分秒。
    • Timestamp : 長整型數(shù)字,從(格林威治時間)1970年1月1日0時0分0秒到現(xiàn)在的總毫秒數(shù)

數(shù)據(jù)模型

????MySQL,Oracle用表作為數(shù)據(jù)模型存儲數(shù)據(jù)。Hive自然也有。下面簡要介紹一下Hive的幾種常用的表吧。

  1. 內(nèi)部表
    最接近普通關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)模型;
    刪除數(shù)據(jù)時會將元數(shù)據(jù)與表數(shù)據(jù)一同刪除,HDFS中的數(shù)據(jù)文件一同被刪除;
create table bucket_table
(sid int, sname string, age int)
row format delimited fields terminated by '\t';
-- 指定數(shù)據(jù)間分隔符,默認(rèn)為制表符'\t'
  1. 外部表
    與HDFS中某個目錄下的數(shù)據(jù)文件建立連接;
    比較像指針,指向HDFS中某個目錄;
    刪除數(shù)據(jù)時,會刪除元數(shù)據(jù),與該目錄的連接,但不會真正刪除HDFS中的數(shù)據(jù);
create external table external_student
(sid int, sname string, age int)
row format delimited fields terminated by '\t'
location '/input';  --指定表數(shù)據(jù)所在 HDFS目錄
  1. 桶表
    用哈希算法將表數(shù)據(jù)分到5個中,一般可以將數(shù)據(jù)打亂放到各個桶中,可以處理數(shù)據(jù)傾斜問題
create table bucket_table
(sid int, sname string, age int)
clustered by(sname) into 5 buckets --將數(shù)據(jù)通過哈希算法分成5部分
row format delimited fields terminated by '\t';
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容