最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

hive函數(shù)簡(jiǎn)介

 更新時(shí)間:2017年09月29日 10:45:34   投稿:mrr  
hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供完整的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行,十分適合數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)計(jì)分析

首先我們要知道hive到底是做什么的。下面這幾段文字很好的描述了hive的特性: 

 1.hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供完整的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。其優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過類SQL語句快速實(shí)現(xiàn)簡(jiǎn)單的MapReduce統(tǒng)計(jì),不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)計(jì)分析。

  2.Hive是建立在 Hadoop 上的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架。它提供了一系列的工具,可以用來進(jìn)行數(shù)據(jù)提取轉(zhuǎn)化加載(ETL),這是一種可以存儲(chǔ)、查詢和分析存儲(chǔ)在 Hadoop 中的大規(guī)模數(shù)據(jù)的機(jī)制。Hive 定義了簡(jiǎn)單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數(shù)據(jù)。同時(shí),這個(gè)語言也允許熟悉 MapReduce 開發(fā)者的開發(fā)自定義的 mapper 和 reducer 來處理內(nèi)建的 mapper 和 reducer 無法完成的復(fù)雜的分析工作。

  要理解hive,必須先理解hadoop和mapreduce,如果有不熟悉的童鞋,可以百度一下。

  使用hive的命令行接口,感覺很像操作關(guān)系數(shù)據(jù)庫(kù),但是hive和關(guān)系數(shù)據(jù)庫(kù)還是有很大的不同,下面我就比較下hive與關(guān)系數(shù)據(jù)庫(kù)的區(qū)別,具體如下:

1.hive和關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)文件的系統(tǒng)不同,hive使用的是hadoop的HDFS(hadoop的分布式文件系統(tǒng)),關(guān)系數(shù)據(jù)庫(kù)則是服務(wù)器本地的文件系統(tǒng);

2.hive使用的計(jì)算模型是mapreduce,而關(guān)系數(shù)據(jù)庫(kù)則是自己設(shè)計(jì)的計(jì)算模型;

3.關(guān)系數(shù)據(jù)庫(kù)都是為實(shí)時(shí)查詢的業(yè)務(wù)進(jìn)行設(shè)計(jì)的,而hive則是為海量數(shù)據(jù)做數(shù)據(jù)挖掘設(shè)計(jì)的,實(shí)時(shí)性很差;實(shí)時(shí)性的區(qū)別導(dǎo)致hive的應(yīng)用場(chǎng)景和關(guān)系數(shù)據(jù)庫(kù)有很大的不同;

4.Hive很容易擴(kuò)展自己的存儲(chǔ)能力和計(jì)算能力,這個(gè)是繼承hadoop的,而關(guān)系數(shù)據(jù)庫(kù)在這個(gè)方面要比數(shù)據(jù)庫(kù)差很多。

  以上都是從宏觀的角度比較hive和關(guān)系數(shù)據(jù)庫(kù)的區(qū)別,hive和關(guān)系數(shù)據(jù)庫(kù)的異同還有很多,我在文章的后面會(huì)一一描述。

  下面我來講講hive的技術(shù)架構(gòu),大家先看下面的架構(gòu)圖: 

  由上圖可知,hadoop和mapreduce是hive架構(gòu)的根基。Hive架構(gòu)包括如下組件:CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor),這些組件我可以分為兩大類:服務(wù)端組件和客戶端組件。

   首先講講服務(wù)端組件:

  Driver組件:該組件包括Complier、Optimizer和Executor,它的作用是將我們寫的HiveQL(類SQL)語句進(jìn)行解析、編譯優(yōu)化,生成執(zhí)行計(jì)劃,然后調(diào)用底層的mapreduce計(jì)算框架。

  Metastore組件:元數(shù)據(jù)服務(wù)組件,這個(gè)組件存儲(chǔ)hive的元數(shù)據(jù),hive的元數(shù)據(jù)存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)里,hive支持的關(guān)系數(shù)據(jù)庫(kù)有derby、mysql。元數(shù)據(jù)對(duì)于hive十分重要,因此hive支持把metastore服務(wù)獨(dú)立出來,安裝到遠(yuǎn)程的服務(wù)器集群里,從而解耦hive服務(wù)和metastore服務(wù),保證hive運(yùn)行的健壯性,這個(gè)方面的知識(shí),我會(huì)在后面的metastore小節(jié)里做詳細(xì)的講解。

  Thrift服務(wù):thrift是facebook開發(fā)的一個(gè)軟件框架,它用來進(jìn)行可擴(kuò)展且跨語言的服務(wù)的開發(fā),hive集成了該服務(wù),能讓不同的編程語言調(diào)用hive的接口。

  客戶端組件:

  CLI:command line interface,命令行接口。

  Thrift客戶端:上面的架構(gòu)圖里沒有寫上Thrift客戶端,但是hive架構(gòu)的許多客戶端接口是建立在thrift客戶端之上,包括JDBC和ODBC接口。

  WEBGUI:hive客戶端提供了一種通過網(wǎng)頁(yè)的方式訪問hive所提供的服務(wù)。這個(gè)接口對(duì)應(yīng)hive的hwi組件(hive web interface),使用前要啟動(dòng)hwi服務(wù)。

  下面我著重講講metastore組件,具體如下:

  Hive的metastore組件是hive元數(shù)據(jù)集中存放地。Metastore組件包括兩個(gè)部分:metastore服務(wù)和后臺(tái)數(shù)據(jù)的存儲(chǔ)。后臺(tái)數(shù)據(jù)存儲(chǔ)的介質(zhì)就是關(guān)系數(shù)據(jù)庫(kù),例如hive默認(rèn)的嵌入式磁盤數(shù)據(jù)庫(kù)derby,還有mysql數(shù)據(jù)庫(kù)。Metastore服務(wù)是建立在后臺(tái)數(shù)據(jù)存儲(chǔ)介質(zhì)之上,并且可以和hive服務(wù)進(jìn)行交互的服務(wù)組件,默認(rèn)情況下,metastore服務(wù)和hive服務(wù)是安裝在一起的,運(yùn)行在同一個(gè)進(jìn)程當(dāng)中。我也可以把metastore服務(wù)從hive服務(wù)里剝離出來,metastore獨(dú)立安裝在一個(gè)集群里,hive遠(yuǎn)程調(diào)用metastore服務(wù),這樣我們可以把元數(shù)據(jù)這一層放到防火墻之后,客戶端訪問hive服務(wù),就可以連接到元數(shù)據(jù)這一層,從而提供了更好的管理性和安全保障。使用遠(yuǎn)程的metastore服務(wù),可以讓metastore服務(wù)和hive服務(wù)運(yùn)行在不同的進(jìn)程里,這樣也保證了hive的穩(wěn)定性,提升了hive服務(wù)的效率。

  Hive的執(zhí)行流程如下圖所示:

圖描述的很清晰了,我這里就不在累述了。

下面我給大家展示一個(gè)簡(jiǎn)單的例子,看看hive是怎么操作的。

首先我們創(chuàng)建一個(gè)普通的文本文件,里面只有一行數(shù)據(jù),該行也只存儲(chǔ)一個(gè)字符串,命令如下:

echo ‘sharpxiajun' > /home/hadoop/test.txt

然后我們建一張hive的表:

hive –e “create table test (value string);

接下來加載數(shù)據(jù):

Load data local inpath ‘home/hadoop/test.txt' overwrite into table test

最后我們查詢下表:

hive –e ‘select * from test';

  大家看到了吧,hive十分簡(jiǎn)單,很好入門,操作和sql很像,下面我就要深入分析下hive與關(guān)系數(shù)據(jù)庫(kù)的區(qū)別,這部分可能有些人看的不是很明白,但是很有必要提前提出,以后我的文章里將進(jìn)一步講述hive,那時(shí)不太明白的童鞋在看看這部分,很多問題就會(huì)清晰很多,具體如下:

1.關(guān)系數(shù)據(jù)庫(kù)里,表的加載模式是在數(shù)據(jù)加載時(shí)候強(qiáng)制確定的(表的加載模式是指數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的文件格式),如果加載數(shù)據(jù)時(shí)候發(fā)現(xiàn)加載的數(shù)據(jù)不符合模式,關(guān)系數(shù)據(jù)庫(kù)則會(huì)拒絕加載數(shù)據(jù),這個(gè)就叫“寫時(shí)模式”,寫時(shí)模式會(huì)在數(shù)據(jù)加載時(shí)候?qū)?shù)據(jù)模式進(jìn)行檢查校驗(yàn)的操作。Hive在加載數(shù)據(jù)時(shí)候和關(guān)系數(shù)據(jù)庫(kù)不同,hive在加載數(shù)據(jù)時(shí)候不會(huì)對(duì)數(shù)據(jù)進(jìn)行檢查,也不會(huì)更改被加載的數(shù)據(jù)文件,而檢查數(shù)據(jù)格式的操作是在查詢操作時(shí)候執(zhí)行,這種模式叫“讀時(shí)模式”。在實(shí)際應(yīng)用中,寫時(shí)模式在加載數(shù)據(jù)時(shí)候會(huì)對(duì)列進(jìn)行索引,對(duì)數(shù)據(jù)進(jìn)行壓縮,因此加載數(shù)據(jù)的速度很慢,但是當(dāng)數(shù)據(jù)加載好了,我們?nèi)ゲ樵償?shù)據(jù)的時(shí)候,速度很快。但是當(dāng)我們的數(shù)據(jù)是非結(jié)構(gòu)化,存儲(chǔ)模式也是未知時(shí)候,關(guān)系數(shù)據(jù)操作這種場(chǎng)景就麻煩多了,這時(shí)候hive就會(huì)發(fā)揮它的優(yōu)勢(shì)。

2.關(guān)系數(shù)據(jù)庫(kù)一個(gè)重要的特點(diǎn)是可以對(duì)某一行或某些行的數(shù)據(jù)進(jìn)行更新、刪除操作,hive不支持對(duì)某個(gè)具體行的操作,hive對(duì)數(shù)據(jù)的操作只支持覆蓋原數(shù)據(jù)和追加數(shù)據(jù)。Hive也不支持事務(wù)和索引。更新、事務(wù)和索引都是關(guān)系數(shù)據(jù)庫(kù)的特征,這些hive都不支持,也不打算支持,原因是hive的設(shè)計(jì)是海量數(shù)據(jù)進(jìn)行處理,全數(shù)據(jù)的掃描時(shí)常態(tài),針對(duì)某些具體數(shù)據(jù)進(jìn)行操作的效率是很差的,對(duì)于更新操作,hive是通過查詢將原表的數(shù)據(jù)進(jìn)行轉(zhuǎn)化最后存儲(chǔ)在新表里,這和傳統(tǒng)數(shù)據(jù)庫(kù)的更新操作有很大不同。

3.Hive也可以在hadoop做實(shí)時(shí)查詢上做一份自己的貢獻(xiàn),那就是和hbase集成,hbase可以進(jìn)行快速查詢,但是hbase不支持類SQL的語句,那么此時(shí)hive可以給hbase提供sql語法解析的外殼,可以用類sql語句操作hbase數(shù)據(jù)庫(kù)

相關(guān)文章

  • Doris實(shí)時(shí)多維分析的解決方案詳解

    Doris實(shí)時(shí)多維分析的解決方案詳解

    這篇文章主要為大家介紹了Doris實(shí)時(shí)多維分析的解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 達(dá)夢(mèng)數(shù)據(jù)庫(kù)文件故障的恢復(fù)方法

    達(dá)夢(mèng)數(shù)據(jù)庫(kù)文件故障的恢復(fù)方法

    本文介紹了達(dá)夢(mèng)數(shù)據(jù)庫(kù)文件損壞或誤刪除后的恢復(fù)方法,這里的數(shù)據(jù)庫(kù)文件包括,表空間數(shù)據(jù)文件、重做日志文件、UNDO文件、TEMP文件、控制文件等,介紹了兩種恢復(fù)場(chǎng)景,感興趣的小伙伴跟著小編一起來看看吧
    2024-12-12
  • DBeaver操作所有數(shù)據(jù)庫(kù)管理工具使用詳解

    DBeaver操作所有數(shù)據(jù)庫(kù)管理工具使用詳解

    這篇文章主要為大家介紹了一款操作所有數(shù)據(jù)庫(kù)工具DBeaver使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • StarRocks數(shù)據(jù)庫(kù)查詢加速及Colocation Join工作原理

    StarRocks數(shù)據(jù)庫(kù)查詢加速及Colocation Join工作原理

    本文詳細(xì)解釋了StarRocks數(shù)據(jù)庫(kù)中數(shù)據(jù)的分區(qū)和分桶策略,重點(diǎn)介紹了ColocationJoin的工作原理,即如何通過相同分桶列和副本數(shù)確保在本地進(jìn)行Join操作,從而提升查詢性能,感興趣的朋友一起看看吧
    2025-03-03
  • 數(shù)據(jù)庫(kù)服務(wù)器構(gòu)建和部署檢查列表詳解

    數(shù)據(jù)庫(kù)服務(wù)器構(gòu)建和部署檢查列表詳解

    這篇文章主要介紹了數(shù)據(jù)庫(kù)服務(wù)器構(gòu)建和部署檢查列表的相關(guān)內(nèi)容,小編覺得挺不錯(cuò)的,這里分享給大家,供各位參考。
    2017-10-10
  • sql 中將日期中分秒化為零的語句

    sql 中將日期中分秒化為零的語句

    用到了sql中的convert函數(shù)將日期中的分秒轉(zhuǎn)換為零
    2008-10-10
  • SQL注入技巧之顯注與盲注中過濾逗號(hào)繞過詳析

    SQL注入技巧之顯注與盲注中過濾逗號(hào)繞過詳析

    SQL注入的繞過技巧有很多,下面這篇文章主要給大家介紹了關(guān)于SQL注入技巧之顯注與盲注中過濾逗號(hào)繞過的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • node-mysql中防止SQL注入的方法總結(jié)

    node-mysql中防止SQL注入的方法總結(jié)

    大家都知道SQL注入對(duì)于網(wǎng)站或者服務(wù)器來講都是一個(gè)非常危險(xiǎn)的問題,如果這一方面沒處理好的話網(wǎng)站可能隨時(shí)給注入了,所以這篇文章就給大家總結(jié)了node-mysql中防止SQL注入的幾種常用做法,有需要的朋友們可以參考借鑒。
    2016-10-10
  • 使用DataGrip創(chuàng)建數(shù)據(jù)庫(kù)并讀取sql文件圖文教程

    使用DataGrip創(chuàng)建數(shù)據(jù)庫(kù)并讀取sql文件圖文教程

    這篇文章主要給大家介紹了關(guān)于使用DataGrip創(chuàng)建數(shù)據(jù)庫(kù)并讀取sql文件的相關(guān)資料,DataGrip是一款數(shù)據(jù)庫(kù)管理客戶端工具,方便連接到數(shù)據(jù)庫(kù)服務(wù)器,執(zhí)行sql、創(chuàng)建表、創(chuàng)建索引以及導(dǎo)出數(shù)據(jù)等,需要的朋友可以參考下
    2023-11-11
  • dbeaver導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)簡(jiǎn)單圖文教程

    dbeaver導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)簡(jiǎn)單圖文教程

    DBeaver是一款適用于開發(fā)人員、數(shù)據(jù)庫(kù)管理員和分析師的多平臺(tái)、多數(shù)據(jù)庫(kù)管理工具,這篇文章主要給大家介紹了關(guān)于dbeaver導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2024-01-01

最新評(píng)論

盐津县| 普定县| 广平县| 井冈山市| 双桥区| 红安县| 昌图县| 台北县| 德保县| 海宁市| 中卫市| 新沂市| 个旧市| 嫩江县| 九寨沟县| 九寨沟县| 金堂县| 琼结县| 教育| 庄河市| 响水县| 监利县| 河池市| 南宁市| 万载县| 临清市| 鸡东县| 军事| 弥勒县| 上饶市| 隆德县| 汉寿县| 凌源市| 连平县| 富锦市| 彭水| 金堂县| 江源县| 茶陵县| 康马县| 收藏|