3、Hive基礎(chǔ)

常用交互命令

  1. -e 不進(jìn)入hive的交互窗口執(zhí)行sql語句
    hive -e "select * from student;"
  2. -f 執(zhí)行腳本中的sql語句
    (1). 創(chuàng)建hive.sql文件
    文件中正確輸入sql語句
    select * from student;
    (2). 執(zhí)行文件中的sql語句
    hive -f hive.sql
    (3). 將執(zhí)行的結(jié)果追加到文件中
    hive -f hive.sql > hive_result.txt

其他常用命令操作

  1. 退出hive窗口
    exit:先隱性提交數(shù)據(jù)塌忽,再退出
    quit:不提交數(shù)據(jù)院仿,退出
  2. 在hive命令行窗口中查看hdfs文件系統(tǒng)
    dfs -ls /;
  3. 在hive命令行窗口查看本地文件系統(tǒng)
    ! ls /
  4. 查看hive中輸入的所有歷史命令
    進(jìn)去當(dāng)前用戶的跟目錄,查看.hivehistory文件

使用jdbc連接hive

  1. 開啟hiveserver2


    開啟hiveserver2.png
  2. 新開窗口連接
    開啟beeline
    !connect jdbc:hive2://hadoop-100:10000
    beeline.png

常見屬性設(shè)置

Hive數(shù)據(jù)倉(cāng)庫(kù)位置配置

  1. default數(shù)據(jù)倉(cāng)庫(kù)的最原始位置是在hdfs上的豌蟋,/user/hive/warehouse路徑下
  2. 在數(shù)據(jù)倉(cāng)庫(kù)目錄下廊散,沒有對(duì)默認(rèn)的數(shù)據(jù)庫(kù)default創(chuàng)建文件夾,如果某張表屬于default數(shù)據(jù)庫(kù)梧疲,直接在數(shù)據(jù)倉(cāng)庫(kù)目錄下創(chuàng)建一個(gè)文件夾
  3. 修改default數(shù)據(jù)倉(cāng)庫(kù)原始位置
    將hive-default.xml.template如下配置信息拷貝到hive-site.xml文件中
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>

配置同組用戶有執(zhí)行權(quán)限
hdfs dfs -chmod g+w /user/hive/warehouse


hive默認(rèn)數(shù)據(jù)庫(kù).png

default數(shù)據(jù)庫(kù)下有張student表允睹,test.db是自己創(chuàng)建的數(shù)據(jù)庫(kù)运准,如上圖


hive新建數(shù)據(jù).png

test.db數(shù)據(jù)庫(kù)下有張people表,如上圖

查詢后信息顯示配置

實(shí)現(xiàn)顯示當(dāng)前數(shù)據(jù)庫(kù)缭受,以及查詢表的頭信息配置

  1. hive-site.xml文件中添加如下配置信息
<property>
    <name>hive.cli.print.header</name>
    <value>true</value>
</property>

<property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
</property>
  1. 重新啟動(dòng)hive
    配置前


    修改前.png

    配置后


    修改后.png

    修改后2.png

Hive運(yùn)行日志信息配置

  1. Hive的log默認(rèn)存放在(當(dāng)前用戶名下)/tmp/hadoop/hive.log文件下
  2. 修改hive的log存放位置
    修改/opt/module/hive/conf/hive-log4j.properties.template文件名稱為hive-log4j.properties
    修改hive-log4j.properties文件中修改log存放位置
    hive.log.dir=/opt/module/hive/logs

參數(shù)配置方式

  1. 查看當(dāng)前所有的配置信息
    set;
  2. 參數(shù)配置的三種方式
    (1). 配置文件方式
    默認(rèn)配置文件:hive-default.xml
    用戶自定義配置文件:hive-site.xml
    注意:用戶自定義配置會(huì)覆蓋默認(rèn)配置胁澳。另外,Hive也會(huì)讀入Hadoop的配置贯涎,因?yàn)镠ive是作為Hadoop的客戶端啟動(dòng)的听哭,Hive的配置會(huì)覆蓋Hadoop的配置。配置文件的設(shè)定對(duì)本機(jī)啟動(dòng)的所有Hive進(jìn)程都有效塘雳。
    (2). 命令行參數(shù)方式
    啟動(dòng)Hive時(shí)陆盘,可以在命令行添加-hiveconf param=value來設(shè)定參數(shù),僅對(duì)本次hive啟動(dòng)有效败明。
    如隘马,hive -hiveconf mapred.reduce.tasks=10;
    查看,set mapred.reduce.tasks;


    命令行參數(shù)方式.png

    (3). 參數(shù)聲明方式
    可以在HQL中使用SET關(guān)鍵字設(shè)定參數(shù)妻顶,僅對(duì)本次hive啟動(dòng)有效酸员。
    如,set mapred.reduce.tasks=100;
    查看讳嘱,set mapred.reduce.tasks;


    參數(shù)聲明方式.png

    上述三種設(shè)定方式的優(yōu)先級(jí)依次遞增幔嗦。即配置文件<命令行參數(shù)<參數(shù)聲明。注意某些系統(tǒng)級(jí)的參數(shù)沥潭,例如log4j相關(guān)的設(shè)定邀泉,必須用前兩種方式設(shè)定,因?yàn)槟切﹨?shù)的讀取在會(huì)話建立以前已經(jīng)完成了钝鸽。

Hive數(shù)據(jù)類型

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

Hive數(shù)據(jù)類型 Java數(shù)據(jù)類型 長(zhǎng)度 例子
TINYINT byte 1byte 有符號(hào)整數(shù) 20
SMALINT short 2byte 有符號(hào)整數(shù) 30
INT int 4byte 有符號(hào)整數(shù) 40
BIGINT long 8byte 有符號(hào)整數(shù) 50
BOOLEAN boolean 布爾類型汇恤,true、false true
FLOAT float 單精度浮點(diǎn)數(shù) 3.1415926
DOUBLE double 雙精度浮點(diǎn)數(shù) 3.1415926
STRING string 字符系列拔恰∫蚧眩可以指定字符集⊙瞻茫可以使用單引號(hào)或者雙引號(hào) ‘hello’财岔,“world”
TIMESTAMP 時(shí)間類型
BINARY 字節(jié)數(shù)組

對(duì)于Hive的String類型相當(dāng)于數(shù)據(jù)庫(kù)的varchar類型,該類型是一個(gè)可變的字符串河爹,不過它不能聲明其中最多能存儲(chǔ)多少個(gè)字符匠璧,理論上它可以存儲(chǔ)2GB的字符數(shù)。

集合數(shù)據(jù)類型

數(shù)據(jù)類型 描述 語法示例
STRUCT 和c語言中的struct類似昌抠,都可以通過“點(diǎn)”符號(hào)訪問元素內(nèi)容患朱。例如,如果某個(gè)列的數(shù)據(jù)類型是STRUCT{first STRING, last STRING},那么第1個(gè)元素可以通過字段.first來引用炊苫。 struct()
MAP MAP是一組鍵-值對(duì)元組集合裁厅,使用數(shù)組表示法可以訪問數(shù)據(jù)冰沙。例如,如果某個(gè)列的數(shù)據(jù)類型是MAP执虹,其中鍵->值對(duì)是’first’->’John’和’last’->’Doe’拓挥,那么可以通過字段名[‘last’]獲取最后一個(gè)元素 map()
ARRAY 數(shù)組是一組具有相同類型和名稱的變量的集合。這些變量稱為數(shù)組的元素袋励,每個(gè)數(shù)組元素都有一個(gè)編號(hào)侥啤,編號(hào)從零開始。例如茬故,數(shù)組值為[‘John’, ‘Doe’]盖灸,那么第2個(gè)元素可以通過數(shù)組名[1]進(jìn)行引用 Array()

Hive有三種復(fù)雜數(shù)據(jù)類型ARRAY、MAP 和 STRUCT磺芭。ARRAY和MAP與Java中的Array和Map類似赁炎,而STRUCT與C語言中的Struct類似,它封裝了一個(gè)命名字段集合钾腺,復(fù)雜數(shù)據(jù)類型允許任意層次的嵌套徙垫。

例子

有一個(gè)json格式的字符串

{
    "name": "ZJ",
    "parent": [
        "Z",
        "J"
    ],
    "score": {
        "語文": 80,
        "數(shù)學(xué)": 90,
        "英語": 100
    },
    "address": {
        "province": "河南",
        "city": "新鄉(xiāng)"
    }
}

有一些數(shù)據(jù)

ZJ  Z_J 語文:80_數(shù)學(xué):90_英語:100  河南_新鄉(xiāng)
ZFH Z_FG    語文:100_數(shù)學(xué):90_英語:180 河南_新鄉(xiāng)

將這些數(shù)據(jù)保存在hive表中
首先創(chuàng)建表

create table student(
    name string,
    parents array<string>,
    score map<string, int>,
    address struct<province:string, city:string>
) row format delimited
fields terminated by '\t'
collection items terminated by '_'
map keys terminated by ':'
lines terminated by '\n';

創(chuàng)建表的相關(guān)語句解釋
row format delimited
fields terminated by ',' 列分隔符
collection items terminated by '_' MAP STRUCT 和 ARRAY 的分隔符(數(shù)據(jù)分割符號(hào))
map keys terminated by ':' MAP中的key與value的分隔符
lines terminated by '\n';行分隔符,默認(rèn)\n,可不寫
導(dǎo)入數(shù)據(jù)

load data local inpath '/opt/module/datas/student.txt' into table student;

查詢數(shù)據(jù)

select * from student;
select name,parents[0],parents[1],score["語文"],address.province from student;

類型轉(zhuǎn)化

Hive的原子數(shù)據(jù)類型是可以進(jìn)行隱式轉(zhuǎn)換的放棒,類似于Java的類型轉(zhuǎn)換姻报,例如某表達(dá)式使用INT類型,TINYINT會(huì)自動(dòng)轉(zhuǎn)換為INT類型间螟,但是Hive不會(huì)進(jìn)行反向轉(zhuǎn)化吴旋,例如,某表達(dá)式使用TINYINT類型寒亥,INT不會(huì)自動(dòng)轉(zhuǎn)換為TINYINT類型邮府,它會(huì)返回錯(cuò)誤荧关,除非使用CAST操作

隱式類型轉(zhuǎn)換規(guī)則如下

  1. 任何整數(shù)類型都可以隱式地轉(zhuǎn)換為一個(gè)范圍更廣的類型溉奕,如TINYINT可以轉(zhuǎn)換成INT,INT可以轉(zhuǎn)換成BIGINT忍啤。
  2. 所有整數(shù)類型加勤、FLOAT和STRING類型都可以隱式地轉(zhuǎn)換成DOUBLE。
  3. TINYINT同波、SMALLINT鳄梅、INT都可以轉(zhuǎn)換為FLOAT。
  4. BOOLEAN類型不可以轉(zhuǎn)換為任何其它的類型未檩。

可以使用CAST操作顯示進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換

例如CAST('1' AS INT)將把字符串'1' 轉(zhuǎn)換成整數(shù)1戴尸;如果強(qiáng)制類型轉(zhuǎn)換失敗,如執(zhí)行CAST('X' AS INT)冤狡,表達(dá)式返回空值 NULL孙蒙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末项棠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子挎峦,更是在濱河造成了極大的恐慌香追,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坦胶,死亡現(xiàn)場(chǎng)離奇詭異透典,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)顿苇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門峭咒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纪岁,你說我怎么就攤上這事讹语。” “怎么了蜂科?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵顽决,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我导匣,道長(zhǎng)才菠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任贡定,我火速辦了婚禮赋访,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缓待。我一直安慰自己蚓耽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布旋炒。 她就那樣靜靜地躺著步悠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瘫镇。 梳的紋絲不亂的頭發(fā)上鼎兽,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音铣除,去河邊找鬼谚咬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛尚粘,可吹牛的內(nèi)容都是我干的择卦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼秉继!你這毒婦竟也來了潘明?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤秕噪,失蹤者是張志新(化名)和其女友劉穎钳降,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腌巾,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡遂填,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了澈蝙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吓坚。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖灯荧,靈堂內(nèi)的尸體忽然破棺而出礁击,到底是詐尸還是另有隱情,我是刑警寧澤逗载,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布哆窿,位于F島的核電站,受9級(jí)特大地震影響厉斟,放射性物質(zhì)發(fā)生泄漏挚躯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一擦秽、第九天 我趴在偏房一處隱蔽的房頂上張望码荔。 院中可真熱鬧,春花似錦感挥、人聲如沸缩搅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽硼瓣。三九已至,卻和暖如春域蜗,著一層夾襖步出監(jiān)牢的瞬間巨双,已是汗流浹背噪猾。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工霉祸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人袱蜡。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓丝蹭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親坪蚁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奔穿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容