Hive 數(shù)據(jù)倉庫

1. 配置

  1. 初始化默認(rèn)的 derby 數(shù)據(jù)庫,作為 Hive 的元數(shù)據(jù)庫(MetaStore)

    bin/schematool -dbType derby -initSchema
    

注意:初始化 Derby 作為元數(shù)據(jù)庫時橡卤,會在當(dāng)前 shell 路徑下生成 metastore_db/ 目錄箍铲。如在別處啟動 Hive藻三,而此處無 metastore_db/ 目錄時苗踪,將無法啟動 Hive潜叛,需要再在此路徑下秽褒,重新初始化壶硅,生成該目錄秦士。

  1. 配置 MySQL 作為 Hive 的元數(shù)據(jù)庫

    1. 在 conf 目錄下創(chuàng)建 hive-site.xml编矾,配置如下

      <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      
      <configuration>
        <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://hm02:3306/hive?createDatabaseIfNotExist=true</value>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionDriverName</name>
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionUserName</name>
            <value>root</value>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionPassword</name>
            <value>123</value>
        </property>
      </configuration>
      
    2. com.mysql.jdbc.Driver 復(fù)制到 lib/ 目錄下

    3. 初始化 MySQL 的 MetaStore

      bin/schematool -dbType mysql -initSchema
      

注意 MySQL 需要授權(quán)遠(yuǎn)程登錄

2. 使用

  • 啟動 Hive

    bin/hive
    
  • DQL

    --查看數(shù)據(jù)庫
    show databases;
    
    --查看當(dāng)前數(shù)據(jù)庫的表信息 (Derby 默認(rèn)使用 default 作為數(shù)據(jù)庫)
    show tables;
    
    --查看表結(jié)構(gòu)
    show create table student;
    
    --啟用 MapReduce 進(jìn)行查詢
    select * from student order by id desc;
    select count(1) from student;
    
  • DDL

    --創(chuàng)建表
    create table student(id int, name string);
    
    --創(chuàng)建表 (指定分隔符)
    create table student(id int, name string) row format delimited fields terminated by '\t';
    
  • DML

    --Hive 獨有語法,將指定路徑的文件 導(dǎo)入至數(shù)據(jù)倉庫
    ----如未指定分隔符央串,則導(dǎo)入的數(shù)據(jù)無法被解析蚂踊,全部為 NULL
    load data local inpath '/opt/stu.txt' into table student;
    

3. 說明

Derby 數(shù)據(jù)庫 為只能允許一個會話連接的文件數(shù)據(jù)庫约谈,因此需要修改為 MySQL 數(shù)據(jù)庫,從而支持多用戶會話犁钟。

MySQL 作為元數(shù)據(jù)庫時的表信息:

  • TBLS
    • 表信息
  • COLUMNS_V2
    • 列信息
  • SDS
    • 存放在 HDFS 中的位置信息棱诱、輸入輸出格式等
  • PARTITION_*
    • 分區(qū)表

4. 進(jìn)階

1. 內(nèi)部表、外部表

  • 內(nèi)部表
    • 由 Hive 管理涝动,文件保存在 HDFS 的 Hive 目錄內(nèi)
    • 先有表迈勋,后有數(shù)據(jù)
    • 刪除表后,刪除元數(shù)據(jù)和存儲的數(shù)據(jù)
  • 外部表(加 external 修飾醋粟,指定 location
    • 由用戶自行管理靡菇,文件需要指定保存的 HDFS 路徑
    • 先有數(shù)據(jù),后建表
    • 刪除表后米愿,僅刪除元數(shù)據(jù)厦凤,存儲數(shù)據(jù)不會被刪除
    • 建表后,自動從指定 HDFS 導(dǎo)入元數(shù)據(jù)
  • 準(zhǔn)備數(shù)據(jù)育苟,保存到 /opt/person.txt

    1,xiaoming,book-TV-code,beijing:chaoyang
    2,lilei,book-code,nanjing:yuhua
    3,lihua,music-book,heilongjiang:haerbin
    
  • 創(chuàng)建內(nèi)部表

    --單元格分隔:row format delimited fields terminated by ','
    --集合分隔:collection items terminated by '-'
    --Map分隔:map keys terminated by ':'
    create table person1 (
        id int,
        name string,
        hobby array<string>,
        addr map<string,string>
    )
    row format
    delimited fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':';
    
    --導(dǎo)入
    load data local inpath '/opt/person.txt' into table person1;
    
  • 創(chuàng)建外部表

    --外部表:多一個 external 修飾较鼓;需要指定 location
    create external table person2 (
        id int,
        name string,
        hobby array<string>,
        addr map<string,string>
    )
    row format
    delimited fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':'
    location '/user/person2';
    
    --導(dǎo)入
    load data local inpath '/opt/person.txt' into table person2;
    
  • 此時查看 Hive 元數(shù)據(jù)庫的 TBLS

    • TBL_TYPE 列中,內(nèi)部表為 MANAGED_TABLE 违柏,外部表為EXTERNAL_TABLE
  • 查看詳細(xì)的表信息(可以看到 HDFS 保存路徑的變化)

    desc formatted person1
    

2. 分區(qū)

  • 創(chuàng)建內(nèi)部表時博烂,定義分區(qū)

    create table person3 (
        id int,
        name string,
        hobby array<string>,
        addr map<string,string>
    )
    partitioned by (p_dt string)
    row format
    delimited fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':';
    
  • 導(dǎo)入時,指定分區(qū)

    load data local inpath '/opt/person.txt' into table person3 partition(p_dt='201907');
    
  • 查看指定表的所有分區(qū)

    show partitions person3;
    
  • 添加一個分區(qū)

    alter table person3 add partition(p_dt='201908')
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末漱竖,一起剝皮案震驚了整個濱河市脖母,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闲孤,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烤礁,死亡現(xiàn)場離奇詭異讼积,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)脚仔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門勤众,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鲤脏,你說我怎么就攤上這事们颜÷蓝洌” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵窥突,是天一觀的道長努溃。 經(jīng)常有香客問我,道長阻问,這世上最難降的妖魔是什么梧税? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮称近,結(jié)果婚禮上第队,老公的妹妹穿的比我還像新娘。我一直安慰自己刨秆,他們只是感情好凳谦,可當(dāng)我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著衡未,像睡著了一般尸执。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上眠屎,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天剔交,我揣著相機(jī)與錄音,去河邊找鬼改衩。 笑死岖常,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的葫督。 我是一名探鬼主播竭鞍,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼橄镜!你這毒婦竟也來了偎快?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤洽胶,失蹤者是張志新(化名)和其女友劉穎晒夹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姊氓,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡丐怯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了翔横。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片读跷。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖禾唁,靈堂內(nèi)的尸體忽然破棺而出效览,到底是詐尸還是另有隱情无切,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布丐枉,位于F島的核電站哆键,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏矛洞。R本人自食惡果不足惜洼哎,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沼本。 院中可真熱鬧噩峦,春花似錦、人聲如沸抽兆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辫红。三九已至凭涂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贴妻,已是汗流浹背切油。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留名惩,地道東北人澎胡。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像娩鹉,于是被迫代替她去往敵國和親攻谁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,446評論 2 359