• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      分布式系統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)工具Hive 的工作原理及應(yīng)用

      2022-01-18 02:33:54陳新房劉義卿
      科學(xué)技術(shù)創(chuàng)新 2021年36期
      關(guān)鍵詞:數(shù)據(jù)類(lèi)型數(shù)據(jù)倉(cāng)庫(kù)海量

      陳新房 劉義卿

      (防災(zāi)科技學(xué)院信息工程學(xué)院,河北 廊坊 065201)

      1990 年,比爾·恩門(mén)(Bill Inmon)第一次提出了數(shù)據(jù)倉(cāng)庫(kù)概念,與結(jié)構(gòu)化數(shù)據(jù)庫(kù)不同的是,數(shù)據(jù)倉(cāng)庫(kù)研究和解決如何從數(shù)據(jù)庫(kù)中獲取信息的問(wèn)題,數(shù)據(jù)倉(cāng)庫(kù)的基本特征表現(xiàn)為是一個(gè)用戶(hù)主題域的、集成統(tǒng)一的、穩(wěn)定性較強(qiáng)的、反映歷史變化的數(shù)據(jù)的集合,為管理層進(jìn)行分析決策(Decision Making Support)提供強(qiáng)有力的支撐。就重要功能而言,數(shù)據(jù)倉(cāng)庫(kù)仍然是對(duì)聯(lián)機(jī)事務(wù)處理(OLTP)長(zhǎng)時(shí)間以來(lái)產(chǎn)生的海量大數(shù)據(jù),通過(guò)數(shù)據(jù)倉(cāng)庫(kù)組件特有的數(shù)據(jù)儲(chǔ)存結(jié)構(gòu),進(jìn)行系統(tǒng)的、全面的分析與整理,以便通過(guò)不同的方法如聯(lián)機(jī)分析處理(OLAP)等進(jìn)行分析處理。同時(shí),隨著數(shù)據(jù)挖掘(Data Mining) 技術(shù)、決策支持系統(tǒng)(Decision-making Support System, DSS)、主管資訊系統(tǒng) (Excutive Information System)的創(chuàng)建,通過(guò)數(shù)據(jù)倉(cāng)庫(kù)操作能夠幫助決策者從大量數(shù)據(jù)中,快速高效的分析提取出有價(jià)值的信息,以利與決策制定以及對(duì)外部環(huán)境的變化租出響應(yīng)。數(shù)據(jù)倉(cāng)庫(kù)體系結(jié)構(gòu)如圖1 所示。

      圖1 數(shù)據(jù)倉(cāng)庫(kù)體系結(jié)構(gòu)

      1 數(shù)據(jù)倉(cāng)庫(kù)工具Hive 概述

      Hive 的實(shí)現(xiàn)是基于Hadoop 生態(tài)系統(tǒng)的,通過(guò)Hive 工具,可以對(duì)數(shù)據(jù)進(jìn)行提取、轉(zhuǎn)化、加載等操作,能夠?qū)Υ鎯?chǔ)在Hadoop 集群中的海量數(shù)據(jù)進(jìn)行存儲(chǔ)、查詢(xún)和分析的操作機(jī)制。設(shè)計(jì)Hive工具的主要目的是使得對(duì)Java 編程技能掌握相對(duì)較弱但是對(duì)SQL 技能比較精通的數(shù)據(jù)分析師對(duì)存儲(chǔ)在HDFS 中的海量數(shù)據(jù)進(jìn)行查詢(xún)功能操作。

      Hive 工具將數(shù)據(jù)文件映射成一張數(shù)據(jù)庫(kù)表,通過(guò)類(lèi)SQL 語(yǔ)言即HiveQL 語(yǔ)言的查詢(xún)功能,數(shù)據(jù)分析師通過(guò)編寫(xiě)相對(duì)精通的HiveQL 語(yǔ)句,即可實(shí)現(xiàn)MapReduce 任務(wù)的功能。這一特性使得Hive 十分適合對(duì)大規(guī)模數(shù)據(jù)存儲(chǔ)、統(tǒng)計(jì)、分析、查詢(xún)操作,由于是部署在Hadoop 平臺(tái)之上,因而具有良好的擴(kuò)展性。Hive 的優(yōu)點(diǎn)是相對(duì)簡(jiǎn)單易學(xué),可以快速通過(guò)類(lèi)似SQL 語(yǔ)句實(shí)現(xiàn)MapReduce 統(tǒng)計(jì)功能,可以大幅提高開(kāi)發(fā)效率。

      HiveQL 的設(shè)計(jì)只是降低了學(xué)習(xí)成本,其實(shí)質(zhì)仍然是MapReduce 任務(wù)的實(shí)現(xiàn)。在此,再次強(qiáng)調(diào),Hive 工具本身是數(shù)據(jù)倉(cāng)庫(kù),而不是結(jié)構(gòu)化的數(shù)據(jù)庫(kù)系統(tǒng),二者的主要區(qū)別如表1 所示。

      表1 Hive 與數(shù)據(jù)庫(kù)的區(qū)別

      2 Hive 系統(tǒng)架構(gòu)

      Hive 的體系結(jié)構(gòu)可以分為以下幾部分:

      2.1 用戶(hù)可以通過(guò)三種接口實(shí)現(xiàn)Hive 的操作,分別是CLI、Client 以及WUI(Web User Interface)等接口。最常用的實(shí)現(xiàn)方式是CLI,這種借口形式啟動(dòng)CLI 接口同時(shí)會(huì)啟動(dòng)一個(gè)Hive 副本。利用Client 模式可以實(shí)現(xiàn)用戶(hù)連接至Hive Server,這種形式需要指出Hive Server 所安裝的節(jié)點(diǎn),在該節(jié)點(diǎn)上將啟動(dòng)Hive Server 起來(lái)。顧名思義,WUI 接口形式是用戶(hù)通過(guò)瀏覽器實(shí)現(xiàn)Hive 的操作。

      2.2 處于Hive 核心位置是驅(qū)動(dòng)程序,由解釋器、編譯器、優(yōu)化器三部分組成,通過(guò)驅(qū)動(dòng)程序?qū)iveQL 語(yǔ)句進(jìn)行詞法分析、語(yǔ)法分析、編譯、優(yōu)化以及生產(chǎn)查詢(xún)計(jì)劃,進(jìn)一步將生成的查詢(xún)計(jì)劃存儲(chǔ)在集群中,隨后轉(zhuǎn)換為MapReduce 任務(wù)執(zhí)行完成。

      2.3 與此同時(shí),Hive 也有結(jié)構(gòu)化數(shù)據(jù)庫(kù),如MySQL、derBy 數(shù)據(jù)庫(kù),這種結(jié)構(gòu)化數(shù)據(jù)表存儲(chǔ)的是數(shù)據(jù)表的元數(shù)據(jù),包括數(shù)據(jù)表名稱(chēng)、列(字段)、分區(qū)以及是否為外部表、數(shù)據(jù)所在目錄等信息。如圖2 所示。

      圖2 Hive 系統(tǒng)架構(gòu)

      3 Hive 的數(shù)據(jù)類(lèi)型

      雖然Hive 與結(jié)構(gòu)化數(shù)據(jù)庫(kù)有很大區(qū)別,但是在數(shù)據(jù)類(lèi)型方面,Hive 有著與結(jié)構(gòu)化數(shù)據(jù)庫(kù)相同的基本數(shù)據(jù)類(lèi)型,同時(shí)具有結(jié)構(gòu)化數(shù)據(jù)庫(kù)不具有集合數(shù)據(jù)類(lèi)型。

      選擇數(shù)據(jù)類(lèi)型時(shí),需要考慮的因素主要有兩個(gè)方面:一是文本文件中數(shù)據(jù)類(lèi)型如何表示的,二是需要考慮數(shù)據(jù)存儲(chǔ)過(guò)程中為了提高存儲(chǔ)、計(jì)算性能問(wèn)題以及其他問(wèn)題是否具備可以替代的方案。

      相比與結(jié)構(gòu)化數(shù)據(jù)庫(kù),Hive 具有一個(gè)獨(dú)特的功能就是文件中數(shù)據(jù)的編碼方式具有非常大的靈活性。如表2、3 所示。

      表2 Hive 的基本數(shù)據(jù)類(lèi)型

      表3 Hive 的集合數(shù)據(jù)類(lèi)型

      4 Hive 工作原理

      簡(jiǎn)單來(lái)說(shuō),Hive 就是基于Hadoop 平臺(tái)上的數(shù)據(jù)倉(cāng)庫(kù)。在Hadoop 平臺(tái)上層設(shè)計(jì)了一個(gè)類(lèi)SQL 接口(即HiveQL)作為查詢(xún)接口,可以將HiveQL 裝換為MapReduce 任務(wù)在Hadoop 平臺(tái)上運(yùn)行實(shí)現(xiàn)。數(shù)據(jù)分析人員可以通過(guò)HiveQL 語(yǔ)言實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的統(tǒng)計(jì)、分析、查詢(xún)操作,而不需要使用編程語(yǔ)言(例如Java)編寫(xiě)MapReduce 程序進(jìn)行實(shí)現(xiàn)。下面以常見(jiàn)的Group By 操作為例介紹實(shí)現(xiàn)過(guò)程。

      現(xiàn)有一個(gè)數(shù)據(jù)分組Group By 操作,要求是將Score 表中的數(shù)據(jù)信息進(jìn)行合并,合并的過(guò)程按照rank 與level 構(gòu)成的組合鍵進(jìn)行操作,計(jì)算出在每一個(gè)rank 和level 的組合鍵值下數(shù)據(jù)記錄的條數(shù),不難寫(xiě)出其sql 語(yǔ)句為:

      select rank, level ,count (*) as value from score group by rank, level

      對(duì)于group by 操作轉(zhuǎn)換為MapReduce 的過(guò)程如圖3 所示。

      圖3 HSQL 語(yǔ)句轉(zhuǎn)換成MapReduce 的基本原理

      5 Hive 數(shù)據(jù)分析

      在此舉一個(gè)實(shí)例實(shí)踐操作Hive 數(shù)據(jù)分析過(guò)程。現(xiàn)有一個(gè)300000 行用戶(hù)信息的數(shù)據(jù)信息,將其上傳到分布式系統(tǒng)中,并利用數(shù)據(jù)倉(cāng)庫(kù)Hive 工具進(jìn)行數(shù)據(jù)分析。

      5.1 數(shù)據(jù)準(zhǔn)備

      在HDFS 上創(chuàng)建數(shù)據(jù)存儲(chǔ)目錄,將數(shù)據(jù)上傳到HDFS 分布式文件系統(tǒng)中,并顯示其前10 行內(nèi)容。

      這是存儲(chǔ)在HDFS 文件系統(tǒng)中的數(shù)據(jù),不能進(jìn)行數(shù)據(jù)分析、清晰以及提取等操作,需要通過(guò)MapReduce 編程或Hive 實(shí)現(xiàn)對(duì)數(shù)據(jù)分析。但是MapReduce 要求數(shù)據(jù)分析人員對(duì)編程實(shí)現(xiàn)要求較高,實(shí)現(xiàn)較復(fù)雜,Hive 工具解決了這一難題,為精通SQL 語(yǔ)言而編程能力較弱的數(shù)據(jù)分析師對(duì)存儲(chǔ)在集群中的大規(guī)模數(shù)據(jù)進(jìn)行查詢(xún)操作提供了便利。

      5.2 啟動(dòng)MySQL 服務(wù),創(chuàng)建外部表

      在Hive 數(shù)據(jù)倉(cāng)庫(kù)中創(chuàng)建了外表并且加載數(shù)據(jù)后,就可以通過(guò)HSQL 語(yǔ)言進(jìn)行數(shù)據(jù)分析操作了。

      5.3 數(shù)據(jù)分析

      ①利用Hive 語(yǔ)句,查詢(xún)前20 位用戶(hù)購(gòu)買(mǎi)商品時(shí)的時(shí)間和購(gòu)買(mǎi)的商品種類(lèi)。

      2014-12-12 5232

      ②查詢(xún)出uid 不重復(fù)的數(shù)據(jù)有多少條。

      hive>select count(distinct uid) from bigdata_user;

      OK

      270

      此查詢(xún)編寫(xiě)Mapreduce 實(shí)現(xiàn)過(guò)程至少70 行代碼,在此不在贅述。

      5.4 數(shù)據(jù)導(dǎo)出

      對(duì)數(shù)據(jù)分析完后,可以通過(guò)Sqoop 工具將其由Hive 導(dǎo)出到MySQL 結(jié)構(gòu)化數(shù)據(jù)庫(kù)中,已方便使用者進(jìn)行分析、存儲(chǔ)以及可視化等操作,各省消費(fèi)用戶(hù)數(shù)如圖4 所示。

      圖4 各省消費(fèi)用戶(hù)數(shù)

      總結(jié),本文首先介紹了數(shù)據(jù)倉(cāng)庫(kù)的概念,進(jìn)而引入Hive 數(shù)據(jù)倉(cāng)庫(kù)工具,設(shè)計(jì)Hive 工具的主要目的是使得對(duì)Java 編程技能掌握相對(duì)較弱但是對(duì)SQL 技能比較精通的數(shù)據(jù)分析師對(duì)存儲(chǔ)在HDFS 中的海量數(shù)據(jù)進(jìn)行查詢(xún)功能操作進(jìn)行論述,并介紹了Hive 的數(shù)據(jù)類(lèi)型以及HiveQL轉(zhuǎn)換為MapReduce 任務(wù)的過(guò)程。最后利用HiveSQL 對(duì)300000行用戶(hù)信息進(jìn)行數(shù)據(jù)分析操作,充分表明Hive 在數(shù)據(jù)分析上的特點(diǎn),并將數(shù)據(jù)結(jié)果導(dǎo)出進(jìn)行可視化。

      猜你喜歡
      數(shù)據(jù)類(lèi)型數(shù)據(jù)倉(cāng)庫(kù)海量
      一種傅里葉域海量數(shù)據(jù)高速譜聚類(lèi)方法
      詳談Java中的基本數(shù)據(jù)類(lèi)型與引用數(shù)據(jù)類(lèi)型
      如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類(lèi)型
      海量快遞垃圾正在“圍城”——“綠色快遞”勢(shì)在必行
      基于數(shù)據(jù)倉(cāng)庫(kù)的住房城鄉(xiāng)建設(shè)信息系統(tǒng)整合研究
      分布式存儲(chǔ)系統(tǒng)在液晶面板制造數(shù)據(jù)倉(cāng)庫(kù)中的設(shè)計(jì)
      電子制作(2016年15期)2017-01-15 13:39:15
      探析電力系統(tǒng)調(diào)度中數(shù)據(jù)倉(cāng)庫(kù)技術(shù)的應(yīng)用
      一個(gè)圖形所蘊(yùn)含的“海量”巧題
      基于數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)分析探索與實(shí)踐
      基于文件系統(tǒng)的分布式海量空間數(shù)據(jù)高效存儲(chǔ)與組織研究
      永顺县| 当阳市| 大悟县| 邢台市| 宁津县| 博乐市| 玉门市| 麻栗坡县| 炉霍县| 大厂| 皋兰县| 乐亭县| 大同市| 梨树县| 新乡县| 芒康县| 宁强县| 兰州市| 六安市| 香港| 无锡市| 衢州市| 交口县| 卢龙县| 广东省| 高尔夫| 申扎县| 庄河市| 黄大仙区| 惠东县| 新余市| 新民市| 甘肃省| 固安县| 浑源县| 怀集县| 商河县| 游戏| 常宁市| 兖州市| 浙江省|