您好,登錄后才能下訂單哦!
這篇“Hive數(shù)據(jù)類型有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Hive數(shù)據(jù)類型有哪些”文章吧。
hive: 由 Facebook 開源用于解決海量結(jié)構(gòu)化日志的數(shù)據(jù)統(tǒng)計工具。
Hive 是基于 Hadoop 的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張表,并提供類 SQL 查詢功能。
優(yōu)點:
類似于SQL語句,簡單學習易上手
避免了去寫 MapReduce,減少開發(fā)人員的學習成本
Hive 的執(zhí)行延遲比較高,因此 Hive 常用于數(shù)據(jù)分析,對實時性要求不高的場合
Hive 優(yōu)勢在于處理大數(shù)據(jù),對于處理小數(shù)據(jù)沒有優(yōu)勢,因為 Hive 的執(zhí)行延遲比較高
Hive 支持用戶自定義函數(shù),用戶可以根據(jù)自己的需求來實現(xiàn)自己的函數(shù)
缺點:
Hive 的 HQL 表達能力有限
Hive 的效率比較低
Hive本質(zhì)是一個MR
Hive CLI(Hive Command Line) Hive的命令行
HWI(Hive Web Interface) HiveWeb接口
Hive提供了Thrift服務(wù),也就是Hiveserver。
單用戶模式 : Hive安裝時,默認使用的是Derby數(shù)據(jù)庫存儲元數(shù)據(jù),這樣不能并發(fā)調(diào)用Hive。
遠程服務(wù)器模式 : 啟動MetaStoreServer
Hive數(shù)據(jù)可區(qū)分為表數(shù)據(jù)和元數(shù)據(jù),表數(shù)據(jù)我們都知道是表中的數(shù)據(jù),而元數(shù)據(jù)是用來存儲表的名字、列、表分區(qū)以及屬性
Hive是基于Hadoop分布式文件存儲的,它的數(shù)據(jù)存儲在HDFS中?,F(xiàn)在我們介紹Hive中常見的數(shù)據(jù)導入方式
本地文件系統(tǒng)中導入數(shù)據(jù)到Hive
從HDFS上導入數(shù)據(jù)到Hive表
從其他表中查詢出相應的數(shù)據(jù)并導入Hive表中
在創(chuàng)建表的時候通過從其他表中查詢出相應的記錄并插入到所創(chuàng)建的表中
#1.演示從本地裝載數(shù)據(jù)到hive #1.1創(chuàng)建表 create table student(id string, name string) row format delimited fields terminated by '\t'; #1.2加載本地的文件到hive load data local inpath '/root/student.txt' into table default.student; #default.test 數(shù)據(jù)庫.表名 也可直接表名 #2.演示加載HDFS文件到hive中 #2.1 將文件上傳到HDFS根目錄 dfs -put /root/student.txt /; #2.2加載HDFS上的數(shù)據(jù) load data inpath '/student.txt' into table test.student; #3.加載數(shù)據(jù)覆蓋表中原有的數(shù)據(jù) #3.1上傳文件到HDFS中 dfs -put /root/student.txt /; #將文件裝載到表下 文件就相當于Windows中的剪切操作 #3.2加載數(shù)據(jù)覆蓋表中原有數(shù)據(jù) load data inpath '/student.txt' overwrite into table test.student; #4.查詢表 select * from student;
#通過查詢語句向表中插入數(shù)據(jù)(insert) #1.1創(chuàng)建表 create table student_par(id int,name String) row format delimited fields terminated by '\t'; #1.2通過insert插入數(shù)據(jù) insert into table student_par values(1,'zhangsan'),(2,'lisi');
用戶接口
CLI(command-line interface)、JDBC/ODBC(jdbc 訪問 hive)、WEBUI(瀏覽器訪問 hive)
元數(shù)據(jù)
元數(shù)據(jù)包括:表名、表所屬的數(shù)據(jù)庫(默認是 default)、表的擁有者、列/分區(qū)字段、表的類型(是否是外部表)、表的數(shù)據(jù)所在目錄等
Hadoop
使用 HDFS 進行存儲,使用 MapReduce 進行計算。
驅(qū)動器:Driver
(1)解析器(SQL Parser):將 SQL 字符串轉(zhuǎn)換成抽象語法樹 AST,這一步一般都用第三方工具庫完成,比如 antlr;對 AST 進行語法分析,比如表是否存在、字段是否存在、SQL語義是否有誤。
(2)編譯器(Physical Plan):將 AST 編譯生成邏輯執(zhí)行計劃。
(3)優(yōu)化器(Query Optimizer):對邏輯執(zhí)行計劃進行優(yōu)化。
(4)執(zhí)行器(Execution):把邏輯執(zhí)行計劃轉(zhuǎn)換成可以運行的物理計劃。對于 Hive 來說,就是 MR/Spark。
TextFile
這是默認的文件格式。數(shù)據(jù)不會壓縮處理,磁盤開銷大,數(shù)據(jù)解析開銷也大。
SequenceFile
這是HadooAPI提供的一種二進制文件支持,以二進制的形式序列化到文件中。
RCFile
這種格式是行列存儲結(jié)構(gòu)的存儲方式。
ORC
Optimized Row Columnar ORC文件格式是一種Hadoop生態(tài)圈中的列式存儲格式。
ORC的優(yōu)勢:
列示存儲,有多種文件壓縮方式
文件是可分割的。
提供了多種索引
可以支持復雜的數(shù)據(jù)結(jié)構(gòu) 比如Map
ORC文件格式是以二進制方式存儲的,所以是不可直接讀取的。
將HQL轉(zhuǎn)換成MapReduce程序。
Hive處理的數(shù)據(jù)存儲在HDFS上
Hive分析數(shù)據(jù)底層的實現(xiàn)是MapReduce
執(zhí)行程序運行在Yarn上
簡單來說Hive就是一個查詢引擎。當Hive接受到一條SQL語句會執(zhí)行如下操作:
詞法分析和語法分析。使用antlr將SQL語句解析成抽象語法樹
語義分析。從MetaStore中獲取元數(shù)據(jù)信息,解釋SQL語句中的表名、列名、數(shù)據(jù)類型
邏輯計劃生成。生成邏輯計劃得到算子樹
邏輯計劃優(yōu)化。對算子樹進行優(yōu)化
物理計劃生成。將邏輯計劃生成出的MapReduce任務(wù)組成的DAG的物理計劃
物理計劃執(zhí)行。將DAG發(fā)送到Hadoop集群進行執(zhí)行
將查詢結(jié)果返回。
Hive展現(xiàn)的MapReduce任務(wù)設(shè)計到組件有:
元存儲 : 該組件存儲了Hive中表的信息,其中包括了表、表的分區(qū)、模式、列及其類型、表映射關(guān)系等
驅(qū)動 : 控制HiveQL生命周期的組件
查詢編輯器
執(zhí)行引擎
Hive服務(wù)器
客戶端組件 提供命令行接口Hive CLI、Web UI、JDBC驅(qū)動等
Hive支持兩種數(shù)據(jù)類型,一種原子數(shù)據(jù)類型、還有一種叫復雜數(shù)據(jù)類型。
基本數(shù)據(jù)類型 | ||
---|---|---|
類型 | 描述 | 示例 |
TINYINT | 1字節(jié)有符合整數(shù) | 1 |
SMALLINT | 2字節(jié)有符號整數(shù) | 1 |
INT | 4字節(jié)有符號整數(shù) | 1 |
BIGINT | 8字節(jié)有符號整數(shù) | 1 |
FLOAT | 4字節(jié)單精度浮點數(shù) | 1.0 |
DOUBLE | 8字節(jié)雙精度浮點數(shù) | 1.0 |
BOOLEAN | true/false | true |
STRING | 字符串 | “hive”,‘hive’ |
Hive類型中的String數(shù)據(jù)類型類似于MySQL中的VARCHAR。該類型是一個可變的字符串。
Hive支持數(shù)據(jù)類型轉(zhuǎn)換,Hive是用Java編寫的,所以數(shù)據(jù)類型轉(zhuǎn)換規(guī)則遵循Java :
隱式轉(zhuǎn)換 --> 小轉(zhuǎn)大
強制轉(zhuǎn)換 --> 大傳小
類型 | 描述 | 示例 |
---|---|---|
ARRAY | 有序的字段。字符類型必須相同 | ARRAY(1,2) |
MAP | 無序的鍵值對。建的類型必須是原子的,值可以是任何類型。 | Map(‘a’,1,‘b’,2) |
STRUCT | 一組命名的字段。字段類型可以不同 | STRUCT(‘a’,1,1,0) |
以上就是關(guān)于“Hive數(shù)據(jù)類型有哪些”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。