走進大數據之Hive入門學習筆記(1)

      網友投稿 740 2025-04-02

      Hive相關學習指南

      Hive官網:http://hive.apache.org

      Hive入門指南:http://wiki.apache.org/hadoop/Hive/GettingStarted

      HQL查詢語言指南:http://wiki.apache.org/hadoop/Hive/HiveQL

      演示文稿:http://wiki.apache.org/hadoop/Hive/Presentations

      第一章 概述

      1-1 課程概述

      Hive是基于Hadoop HDFS之上的數據倉庫。

      數據倉庫:本質上就是一個數據庫。但有別于我們通常意義上的數據庫

      Hive安裝有3種方式。

      Hadoop和Hive都是基于Linux操作系統構建的,所以要有熟悉掌握Linux下操作命令。

      1-2 數據倉庫簡介

      ①數據倉庫是一個面向主題的、集成的、不可更新的、隨時間不變化的數據集合,它用于支持企業或組織的決策分析處理。

      面向主題:主題是指用戶使用數據倉庫時關心的重點內容。

      集成的:數據倉庫可將不同類型數據庫管理系統中的數據集成起來保存。

      不可更新的:數據倉庫一般只做數據查詢,不做更新、刪除等操作。

      ②數據倉庫的結構和建立過程:數據源(可能來源于業務數據庫系統、文檔資料和其他數據)——>數據存儲及管理(ETL:抽取、轉換、裝載)——>數據倉庫引擎(不同的服務器有不同的功能)——>前端展示(數據查詢、數據報表、數據分析、各類應用)

      OLTP應用:典型應用-銀行轉賬

      OLAP應用:典型應用-商品推薦系統

      數據倉庫的數據模型:星型模型和雪花模型

      1-3 什么是Hive

      ①Hive是建立在Hadoop HDFS上的數據倉庫基礎架構。而傳統的Oracle或MySQL數據倉庫是直接建立在Oracle或MySQL數據庫之上的。

      ②Hive可以用來進行數據提取、轉化、加載(ETL)。

      ③Hive定義了簡單的類似SQL查詢語言,稱為HQL它允許熟悉SQL的用戶查詢數據。

      ④Hive允許熟悉MapReduce開發者的開發自定義的mapper和reducer來處理內建mapper和reducer無法完成的復雜的分析工作。

      ⑤Hive的SQL解析引擎,它將SQL語句轉移成M/R Job然后在Hadoop上執行。

      ⑥Hive的表其實就是HDFS的目錄/文件。

      《走進大數據之Hive入門》學習筆記(1)

      第二章 Hive的體系結構

      2-1 Hive的體系結構之元數據

      Hive講元數據存儲在數據庫中(metastore),支持mysql、derby、oracle等傳統數據庫,默認為derby。

      Hive中元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在的目錄等。

      元數據被默認創建在derby數據庫中,以表的形式保存數據。表的元信息、列元信息。

      2-2 Hive的體系結構之HQL的執行過程

      ①解析器、編譯器、優化器完成HQL查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃(plan)的生成。生成的查詢計劃存儲在HDFS中,并在隨后有MapReduce調用執行。

      過程:HQL語句——》解析器:詞法分析——》編譯器:生成HQL的執行計劃——》優化器:生成最優執行計劃——》執行。

      ②在oracle數據庫中:

      執行計劃

      explanin plan for select * from emp where deptno10

      查詢執行計劃

      select * from table(dbms_xplan.display)

      全表掃描

      創建索引

      create index myindex on emp(deptno)

      Hive的執行計劃跟上面的oracle的執行計劃類似。

      2-3 Hive體系結構

      ?hadoop

      –用HDFS進行存儲,利用mapreduce進行計算。

      ?元數據存儲(metastroe)

      –通常存儲在關系數據庫中,如mysql,derby。

      Hive Driver:驅動,包括編譯器、解析器、優化器。

      訪問接口:①CLI:Command Line Interface;②通過JDBC/ODBC連接Thrift Server在連接驅動;③Web Console 控制臺(只能查詢)

      第三章 Hive的安裝

      3-1 Hive的安裝模式

      ①Apache的hive官網:hive.apache.org中下載hive.

      bin.tar包為安裝包

      src.tar為源代碼,可用來編譯hive的可執行程序,通過源文件生成打包生成基于web的圖形化管理工具,再部署到hive中,才可使用該圖形化管理工具。

      Hive的源碼中集成有WEB UI管理工具, 需要自行編譯發布到Hive環境中. 注意Hive的安裝包中并不會集成WEB U

      ②安裝hive之前要先安裝hadoop,hadoop可以是單機環境、偽分布環境和集群環境中的一種。

      Hive的安裝有三種模式:嵌入模式、本地模式和遠程模式。

      1. 嵌入模式: 即使用Hive自帶的Derby數據庫, 將元數據及其信息存儲在Derby數據庫上面, 但有個缺點, Derby在同一時間只能接受一個連接(即只能允許一個人對hive進行操作), 故一般用作演示

      2. 本地模式: 將元數據存儲到同一機器中的MySQL數據庫當中, 此模式一般用于開發與測試

      3. 遠程模式: 即是本地模式的升級版, 可將Hive的元數據存儲到其它環境(可以是不同操作系統)機器上的MySQL當中.

      3-2 Hive安裝之嵌入模式

      只需要解壓Hive安裝包, 然后直接執行bin目錄的hive腳本, 便會自動創建一個metastore_db目錄來保存元數據. 注意: 這個metastore_db目錄是自動創建在執行hive時的當前目錄下面, 即在嵌入模式中任意一個目錄下執行hive都會創建此目錄.

      1

      3-3 Hive安裝之遠程模式和本地模式

      遠程配置HIVE;命名hive-site.xml,要配置mysql的url、驅動、用戶名、密碼。

      第四章 Hive的管理

      4-1 Hive管理之CLI方式

      進入CLI方式:

      ① 直接輸入#/bin/hive的執行程序

      ②或者輸入#hive –service cli

      退出CLI方式:

      ① quit;

      ② exit;

      常用的CLI的命令:

      ① 清屏: Ctrl + L 或者 !clear

      ② 查看數據倉庫中的表: show tables;

      ③ 查看數據倉庫中內置的函數: show functions;

      ④ 查看表的結構: desc 表名

      ⑤ 查看HDFS上的文件: dfs –ls 目錄

      dfs –lsr 目錄 (-lsr表示以遞歸的方式查看子目錄)

      ⑥ 執行操作系統的命令: ! 命令

      ⑦ 執行HQL語句: 例如select * from **

      ⑧ 執行SQL的腳本: source SQL文件

      ⑨ 命令“hive –s”: 進入靜默模式:不產生hive的調試信息(mapreduce過程),只顯示最后的結果。

      ⑩ hive –e ’HQL語句’ : 不進入hive直接執行HQL.

      4-2 Hive管理之web界面方式

      啟動web界面方式:

      -端口號:9999

      -啟動方式:#hive –service hwi &

      -通過瀏覽器來訪問:http://

      hive.hwi.listen.host 0.0.0.0 hivehwi.listen.port 9999 hive.hwi.war.file lib/hive-hwi.war

      1

      2

      3

      4

      5

      6

      7

      8

      9

      4-3 Hive管理之遠程模式

      遠程服務啟動方式:

      -端口號:10000

      -啟動方式:#hive –service hiveserver & 即啟動了Hive Thrift Server

      注意:如果以JDBC或ODBC的程序登錄到hive中操作數據時,必須選用遠程服務啟動方式。

      第五章 Hive的數據類型

      5-1 基本數據類型

      tinyint/smallint/int/bigint : 整數類型

      float/double : 浮點數類型

      boolean : 布爾類型

      string : 字符串類型

      5-2 復雜數據類型

      Array : 數組類型,由一系列相同數據類型的元素組成。

      Map : 集合類型,包含key-value鍵值對,可以通過key來訪問元素。Array與map可以嵌套,比如array

      5-3 時間數據類型

      時間類型:

      - Data : 從hive0.12.0開始支持。

      - Timestamp : 從hive0.8.0開始支持。

      Data與Timestamp的區別:Data類型描述的是一個特定的日期(不包含時間,即精確到日):YYYY-MM-DD。而Timestamp是相對于linux基準時間的偏移量,其實就是一個長整型數值,例如要獲取系統當前的時間戳可以執行:select unix_timestamp();。 這兩者可以轉換。

      第六章 Hive1的數據模型

      6-1 Hive的數據存儲

      基于HDFS

      沒有專門的數據存儲格式,可以用.txt、.csv,默認情況下可以用’\t’作為分隔符

      存儲結構主要包括:數據庫、文件、表、視圖。

      可以直接加載文本文件(.txt文件等)

      創建表時,制定hive數據的列分隔符與行分隔符

      表:

      - Table 內部表

      - Partition 分區表

      - External table 外部表

      - Bucket table 桶表

      視圖

      6-2 內部表

      內部表(Table)

      - 與數據庫中的table 在概念上是類似的。

      - 每一個table在hive中都有一個相應的目錄存儲數據。

      - 所有的table數據(不包括external table)都保存在這個目錄中。

      - 刪除表時,元數據和數據都會被刪除。

      如果沒指定保存的位置,則默認保存在user/hive/warehouse中

      指定行分隔符:row format delimited fileds terminated by ‘,’;

      修改表添加新的一列:alter table t1 add columns(列名 數據類型);

      刪除表時:如果開啟了Hadoop的回收站功能,則drop表后會放在.trash,也就是說可以通過一定方式找回刪除的表。

      6-3 分區表

      分區表(Partition)

      - Partition對應于數據庫的Partition列的密集索引。

      - 在hive中,表中的一個Partition對應于表下的一個目錄,所有的Partition的數據都存儲在對應的目錄中。

      作用:降低掃描的記錄數,提高查詢效率。當數據量很大的時候,我們就很需要創建分區。

      可以通過explain語句查看HQL的執行計劃,讀執行計劃STAGE PLANS的方式:從下往上,從右往左讀。

      Oracle中也有分區表,五種分區表。

      6-4 外部表

      外部表(external table)

      - 指向已經在HDFS中存在的數據,可以創建Partition。

      - 它和內部表在元數據的組織上是相同的,而實際數據的存儲則有較大的差異

      - 外部表只有一個過程,加載數據和創建表同時完成,并不會移動到數據倉庫目錄中,只是與外部數據建立一個鏈接。當刪除一個外部表時,僅僅刪除該鏈接。

      6-5 桶表

      桶表(bucket table)

      - 桶表是對數據進行哈希取值,然后放到不同文件中存儲。

      作用:減低系統熱塊,提高查詢效率。

      create table bucket_table

      (id int,name string)

      clustered by(name) into 3 buckets //按name進行哈希,哈希到3個表中

      row format delimited

      fields terminated by ‘\t’;

      clustered要在row的前面,否則報錯。

      6-6 視圖

      視圖(view)

      - 視圖是一種虛表(不存數據),是一個邏輯概念;可以跨越多張表。

      - 首先視圖是一張表,操作視圖和操作表的方式是一樣的。

      - 視圖建立在已有表的基礎上,視圖賴以建立的這些表稱為基表。

      - 視圖可以簡化復雜的查詢。

      - hive的視圖不存儲數據的,oracle和mysql中的視圖可以存儲數據,稱為物化視圖.

      例如:查詢員工信息:員工號,姓名,月薪,年薪,部門名稱。(需要主外鍵關聯員工表和部門表)

      create view empinfo

      as

      select e.empno, e.ename, e.sal, e.sal*12 annlsal, d.dname

      from emp e, dept d

      where e.deptno = d.deptno;

      Hive 大數據

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:報表工具
      下一篇:excel2003隔列求和的方法
      相關文章
      久久丫精品国产亚洲av不卡 | 亚洲熟妇无码一区二区三区导航| 亚洲AV成人片色在线观看| 亚洲午夜久久久影院伊人| 亚洲国产人成中文幕一级二级| 亚洲国产精品日韩av不卡在线| 亚洲女女女同性video| 亚洲狠狠色丁香婷婷综合| 亚洲日本VA午夜在线影院| 中文字幕亚洲情99在线| 自拍偷区亚洲国内自拍| 亚洲国产精品成人午夜在线观看| 亚洲av综合av一区二区三区| 激情小说亚洲色图| 亚洲VA综合VA国产产VA中| 国产成人精品日本亚洲专区| 国产中文在线亚洲精品官网| 亚洲人成77777在线播放网站| 国产AⅤ无码专区亚洲AV| 亚洲啪啪综合AV一区| 亚洲AV永久纯肉无码精品动漫| 午夜亚洲国产理论秋霞| 亚洲黄网站wwwwww| 亚洲美女精品视频| 亚洲一区二区三区在线观看蜜桃| 亚洲永久在线观看| 亚洲爆乳AAA无码专区| 亚洲国产成人VA在线观看| 国产日韩成人亚洲丁香婷婷| 亚洲精品无码鲁网中文电影| 亚洲AV人人澡人人爽人人夜夜| 2022年亚洲午夜一区二区福利| 亚洲女人18毛片水真多| 亚洲熟妇AV一区二区三区浪潮| 亚洲aⅴ天堂av天堂无码麻豆| 亚洲精品国自产拍在线观看| 亚洲无线码一区二区三区| 亚洲第一成年男人的天堂| 亚洲欧洲日韩在线电影| 亚洲 欧洲 日韩 综合在线| 爱情岛亚洲论坛在线观看|