日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

-Hive-

發(fā)布時間:2023/11/29 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 -Hive- 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Hive定義

Hive 是一種數(shù)據(jù)倉庫技術(shù),用于查詢和管理存儲在分布式環(huán)境下的大數(shù)據(jù)集。構(gòu)建于Hadoop的HDFS和MapReduce上,用于管理和查詢分析結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)倉庫;

  • 使用HQL(類SQL語句)作為查詢接口;
  • 使用HDFS作為底層存儲;
  • 使用MapReduce作為執(zhí)行層,即將HQL語句轉(zhuǎn)譯成M/R Job然后在Hadoop執(zhí)行
    Hive的表其實就是HDFS的目錄/文件夾,按表名把文件夾分開。如果是分區(qū)表,則分區(qū)值是子文件夾;

Hive概述—元數(shù)據(jù)、數(shù)據(jù)、目錄

  • 元數(shù)據(jù)保存在DB(Derby/MySQL)中,包括表的名字、表的列和分區(qū)及其屬性,表的屬性包括是否為外部表等,表的數(shù)據(jù)所在目錄等;
  • 數(shù)據(jù)位于集群目錄下:
  • 內(nèi)部表:/user/hive/warehouse/表名;
  • 外部表:用戶自定的目錄;
    • 表的數(shù)據(jù)即文件(表對應(yīng)文件夾下);上傳文件即相當(dāng)于上傳數(shù)據(jù)到數(shù)據(jù)表中;文件可以有多個;表的分區(qū)對應(yīng)子目錄;

    Hive概述—Hive Shell

    Hive Shell 把 HiveQL 查詢轉(zhuǎn)換為一系列 MapReduce 作業(yè)對任務(wù)進(jìn)行并行處理, 然后返回處理結(jié)果。

    Hive 采用 RDBMS 表 (table) 形式組織數(shù)據(jù)
    , 并為存儲在 Hadoop上的數(shù)據(jù)提供附屬的對數(shù)據(jù)
    進(jìn)行展示的結(jié)構(gòu)描述信息,該描述信息稱為元數(shù)據(jù)
    (metadata)或表模式,以 metastore 形式存儲在
    RDBMS 數(shù)據(jù)庫中。

    Hive使用—內(nèi)、外部表的區(qū)別

    兩者的相同點(diǎn):需要指定元數(shù)據(jù);都支持分區(qū)

    不同點(diǎn):實際數(shù)據(jù)的存儲地點(diǎn)不同

  • 內(nèi)部表。實際數(shù)據(jù)存儲在數(shù)據(jù)倉庫目錄(默認(rèn)集群/user/hive/warehouse 下)。刪除表時,表中的數(shù)據(jù)和元數(shù)據(jù)將會被同時刪除。
  • 外部表。實際數(shù)據(jù)存儲在創(chuàng)建語句location指定的HDFS路徑中,不會移動到數(shù)據(jù)庫目錄中。如果刪除一個外部表,僅會刪除元數(shù)據(jù),表中的數(shù)據(jù)不會被刪除。
  • Hive使用—分區(qū)Partition

    在實際項目中,經(jīng)常“按天分表 的模式設(shè)計數(shù)據(jù)庫!Hive分區(qū)類似數(shù)據(jù)庫中相應(yīng)分區(qū)列的一個索引;Hive表中的一個分區(qū)對應(yīng)表下的一個目錄,所有分區(qū)的數(shù)據(jù)都存儲在各自對應(yīng)的子目錄中

    例如:htable包含ds、city兩個分區(qū),則相同日期、不同
    城市的hdfs目錄分別為:

    • /datawarehouse/htable/ds=20100301/city=GZ
    • /datawarehouse/htable/ds=20100301/city=BJ

    Hive使用—桶Bucket

    桶對指定列進(jìn)行哈希(hash)計算時,根據(jù)哈希值切分?jǐn)?shù)據(jù),每個桶對應(yīng)一個文件。
    例如:將屬性列user分散到32個桶中,哈希值為0、10的分別對應(yīng)的文件為:

    • /datawarehouse/htable/ds=20100301/city=GZ/part-00000
    • /datawarehouse/htable/ds=20100301/city=GZ/part-00010

    Hive使用—分區(qū)、分桶、索引

    • 索引和分區(qū)最大的區(qū)別就是索引不分割數(shù)據(jù)表,分區(qū)分割數(shù)據(jù)表。
    • 分區(qū)和分桶最大的區(qū)別就是分桶隨機(jī)分割數(shù)據(jù)表,分區(qū)是非隨機(jī)分割數(shù)據(jù)表。

    Hive使用—Hive 表 DDL 操作

  • Create/Drop/Alter 數(shù)據(jù)庫
  • Create/Drop/Truncate 表
  • Alter 表/分區(qū)/列
  • Create/Drop/Alter 視圖
  • Create/Drop/Alter 索引
  • Create/Drop 函數(shù)
  • Create/Drop/Grant/Revoke 角色和權(quán)限
  • Hive使用—Hive 表 DML 操作

  • 將文件中的數(shù)據(jù)Load到 Hive 表中
  • select 操作
  • 將 select 查詢結(jié)果插入 hive 表中
  • 將 select 查詢結(jié)果寫入文件
  • Hive 表 ACID 事務(wù)特性
  • Hive使用—Hive數(shù)據(jù)類型

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

    • tinyint/smallint/int/bigint 整數(shù)類型
    • float/double 浮點(diǎn)類型
    • boolean 布爾類型
    • string/varchar/char 字符串類型
      復(fù)雜數(shù)據(jù)類型:
    • array:數(shù)組類型,由一系列相同的數(shù)據(jù)類型的元素組成
    • map:集合類型,包含key->value鍵值對,可通過key訪問元素。
    • struct:結(jié)構(gòu)類型,可以包含不同數(shù)據(jù)類型的元素,這些元素可以通過“點(diǎn)語法”的方式來得到所需要的元素。
      時間類型:
    • Date: 日期(年月日)
    • Timestamp: 是unix的一個時間偏移量
    • select unix_timestamp(); 查看系統(tǒng)的時間偏移

    Hive使用—Hive表操作語法

    創(chuàng)建表

    • external 外部表,類似于mysql的csv引擎
    • partitioned by 指定分區(qū)字段
    • clustered by sorted by 可以對表和分區(qū)對某個列進(jìn)行分桶操作,也可以利用sorted by對某個字段進(jìn)行排序
    • row format delimited fields terminated by ‘\t’ 指定數(shù)據(jù)行中字段間的分隔符和數(shù)據(jù)行分隔符
    • stored as 指定數(shù)據(jù)文件格式:textfile sequence rcfile inputformat (自定義的inputformat 類)
    • location 指定數(shù)據(jù)文件存放的hdfs目錄

    內(nèi)部表建表指令(示例)
    CREATE TABLE pokes (foo INT, bar STRING) row format delimited fields terminated by ‘\t’;

    外部表建表指令(示例)
    CREATE external TABLE ext_pokes (foo INT, bar STRING) row format delimited fields terminated by ‘\t’ location ‘/data/extpokes’

    刪除表

    • drop table [IF EXISTS] table_name
    • 刪除內(nèi)部表時會刪除元數(shù)據(jù)和表數(shù)據(jù)文件
    • 刪除外部表(external)時只刪除元數(shù)據(jù)

    修改表

    Hive使用—HiveQL加載數(shù)據(jù)

    加載文件數(shù)據(jù):(local 本地、hdfs)文件數(shù)據(jù)到指定的表分區(qū)
    LOAD DATA LOCAL INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');

    從指定表中選取數(shù)據(jù)插入到其他表中

    FROM src INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100 INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200

    Hive使用—HiveQL Select語句

    Hive使用—分區(qū)表

    Hive使用—桶的使用

    總結(jié)

    以上是生活随笔為你收集整理的-Hive-的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。