Hive編程指南讀書(shū)筆記0001

Hive概述

  • 1.Hive提供了一個(gè)被稱為Hive查詢語(yǔ)言(簡(jiǎn)稱HiveQL或HQL)的SQL方言,來(lái)查詢存儲(chǔ)在Hadoop集群中的數(shù)據(jù)。其實(shí),hive的功能遠(yuǎn)不止查詢,還有對(duì)Hadoop集群上數(shù)據(jù)的各種操作的能力。
  • 2.Hive可以將大多數(shù)的查詢轉(zhuǎn)換為MapReduce任務(wù)(job),進(jìn)而在街上一個(gè)令人熟悉的SQL抽象的同時(shí),拓展Hadoop的可擴(kuò)展性。
  • 3.Hive最適合于數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用程序,使用該應(yīng)用程序進(jìn)行相關(guān)的靜態(tài)數(shù)據(jù)分析,不需要快速響應(yīng)給出結(jié)果,而且數(shù)據(jù)本身不會(huì)頻繁變化。
  • 4.Hive的缺陷:
    • 1.Hive最大的限制是不支持**紀(jì)錄級(jí)別的更新,插入或刪除操作;
    • 2.Hive查詢延時(shí)比較嚴(yán)重,傳統(tǒng)數(shù)據(jù)庫(kù)在秒級(jí)別可以完成的查詢,在Hive中需要更長(zhǎng)時(shí)間
    • 3.Hive不支持事務(wù)

數(shù)據(jù)類型和文件格式

Hive支持關(guān)系型數(shù)據(jù)庫(kù)中的大多數(shù)基本數(shù)據(jù),同時(shí)也支持3種集合數(shù)據(jù)類型,如下。

Hive基本數(shù)據(jù)類型

以上是基本數(shù)據(jù)類型,需要注意的是所有的這些數(shù)據(jù)類型都是對(duì)Java接口的實(shí)現(xiàn),因此,這些數(shù)據(jù)類型的具體行為細(xì)節(jié)和Java中對(duì)應(yīng)的數(shù)據(jù)類型完全一致。如:STRING是Java中的String,F(xiàn)LOAT是Java中的float。另外,和其他SQL一樣,以上名稱類型都是保留字。

Hive支持structs,maps,arrays這三種集合類型。


Hive集合類型

以上名稱類型都是保留字。
以上集合類型是Hive區(qū)別于其他大部分關(guān)系型數(shù)據(jù)庫(kù)的特色。

  • 采用以上數(shù)據(jù)模型創(chuàng)建一個(gè)員工信息表:

<code>
CREATE TABLE employees(
name STRING,
salary FLOAT,
subordinates ARRAY<STRING>,
deductions MAP<STRING,F(xiàn)LOAT>,
address STRUCT<street:STRING,city:STRING,state:STRING,zip:INT>
);
</code>

分隔符:

  • 分隔符的作用:將表格轉(zhuǎn)換為文本時(shí),用分隔符標(biāo)識(shí)文字分隔的位置,或在將文本轉(zhuǎn)換為表格時(shí),用其標(biāo)識(shí)新行或新列的起始位置。一般用戶比較熟悉以逗號(hào)或者制表符為分隔符的文件文本,逗號(hào)符分隔值即CSV,制表符分隔值即TSV
  • 默認(rèn)分隔符:
    Hive默認(rèn)分隔符
    Hive默認(rèn)分隔符
  • 指定分隔符:用戶可以根據(jù)需要指定分隔符,當(dāng)然需要注意的是在指定分隔符的時(shí)候,ROW FORMAT DELIMITED這組關(guān)鍵字必須要寫(xiě)在其他子句之前。
  • 警告:分隔符只會(huì)影響到Hive在讀取到文件后如何進(jìn)行劃分。

展開(kāi)閱讀


HiveQL:數(shù)據(jù)定義

HiveQL是Hive的查詢語(yǔ)言,它不完全遵循任何一種ANSI SQL標(biāo)準(zhǔn)的修訂版,在各大SQL方言中,它可能是MySQL方言最為接近。二者最大不同是:HiveQL不支持行級(jí)別的數(shù)據(jù)的插入,更新和刪除操作,也不支持事務(wù),查詢延時(shí)較高。

所謂HiveQL的數(shù)據(jù)定義語(yǔ)言是指:用于創(chuàng)建,修改和刪除數(shù)據(jù)庫(kù),表,視圖,函數(shù)和索引,簡(jiǎn)而言之是對(duì)表結(jié)構(gòu)的操作。

所謂HiveQL的數(shù)據(jù)操作語(yǔ)言是指:用于將數(shù)據(jù)導(dǎo)入到Hive的表中,以及將數(shù)據(jù)抽取到文件系統(tǒng)中。還包括對(duì)數(shù)據(jù)的查詢,分組,過(guò)濾,連接等操作。

  • 區(qū)別:數(shù)據(jù)定義指定義數(shù)據(jù)表的結(jié)果,數(shù)據(jù)操作是指對(duì)數(shù)據(jù)實(shí)行增刪改查操作。

拓展閱讀:數(shù)據(jù)定義語(yǔ)言和數(shù)據(jù)操作語(yǔ)言的區(qū)別

Hive下的數(shù)據(jù)庫(kù)

  • Hive中數(shù)據(jù)庫(kù)的概念本質(zhì)上是表的一個(gè)目錄或者命名空間。對(duì)于具有很多組和用戶的大集群來(lái)說(shuō),這是非常有用的,因?yàn)檫@樣可以避免表命名沖突。
  • 如果用戶沒(méi)有顯示的指定數(shù)據(jù)庫(kù),那么將會(huì)使用默認(rèn)數(shù)據(jù)庫(kù)default。使用命令:SHOW DATABASES可以查看Hive中所包含的數(shù)據(jù)庫(kù)。
  • Hive會(huì)為每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)目錄,數(shù)據(jù)庫(kù)中的表以子目錄的形式存儲(chǔ)。但是default數(shù)據(jù)庫(kù)除外,這個(gè)數(shù)據(jù)庫(kù)沒(méi)有自己的目錄。數(shù)據(jù)庫(kù)的目錄會(huì)在hive.metastore.warehouse.dir所配置的目錄下創(chuàng)建,比如在默認(rèn)配置下創(chuàng)建數(shù)據(jù)庫(kù)financials時(shí),該數(shù)據(jù)庫(kù)目錄為:/user/hive/warehouse/financials.db;當(dāng)然用戶可以通過(guò)LOCATION命令修改db位置。

注意:Hive定位為數(shù)據(jù)倉(cāng)庫(kù)而不是數(shù)據(jù)庫(kù),Hive和Hbase根據(jù)不同的業(yè)務(wù)需求各司其職。Hive主要用于數(shù)據(jù)的查詢和分析,而并非數(shù)據(jù)的增刪改查CRUD操作。Hbase是面向列的noSQL數(shù)據(jù)庫(kù),用于存儲(chǔ)數(shù)據(jù)。

網(wǎng)友的點(diǎn)評(píng):hbase就是一個(gè)存儲(chǔ)key-value的大map,hive是一個(gè)做統(tǒng)計(jì)處理的工具,類似于awk類的。
所以如果你是一條一條讀寫(xiě)記錄用hbase,如果需要對(duì)大量數(shù)據(jù)做分析統(tǒng)計(jì)用hive。

拓展閱讀:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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