hive 常用命令

1.set hive.cli.print.header=true; //打印表格頭部

2.set hive.mapred.mode=strict;? //設(shè)置hive為“嚴(yán)格”模式储笑,這樣如果對分區(qū)表進行查詢而where子句沒有加分區(qū)過濾的話吉殃,將禁止提交這個任務(wù)

3.select * from new_cnt膳帕;//顯示表格

4.limit 20;

5.crate database? name; // 創(chuàng)建數(shù)據(jù)庫

6.show databases税手;

7.show database like “h.*"? //顯示“h”開頭的database

8.crate external table name? //建立外部表

9.crate table name(? )partition by( county string,state string)? //建立表并分區(qū)

10.drop table tablename褐桌;//刪除表格

11.alter table log_messages rename to logmsgs书幕;//將表log_massages重命名為logmsgs

12.alter table log_massages add? ? //增加表的新分區(qū)

? ? ? partition(year = 2011,month = 1凡橱,day = 1) location"/logs/2011/01/01"

? ? ? partition(year = 2011小作,month = 1,day = 2) location"/logs/2011/01/02"

? ? ? partition(year = 2011稼钩,month = 1顾稀,day = 3) location"/logs/2011/01/03"

? .....;

13..alter table log_massages? partition(year = 2011,month = 1变抽,day = 2)

set location"s3n://ourbucket/logs/2011/01/02" ; //移動分區(qū)

14.alter table? log_massages drop partition(year = 2011础拨,month = 1,day = 2)

//刪除分區(qū)

15.insert overwrite(into) table employees? partition (county = "US",state="OR")

? ? select * from staged_employees se where se.cnty = "US" and se.st = "OR";

? ? ? //把表 “se” 中的數(shù)據(jù)插入到表“s”中? ? ----靜態(tài)分區(qū)插入

16.insert overwrite(into) table employees partition (county,state)

? ? select ...,se.cnty,se.st from staged_employees se绍载;

? ? //把表“se”中的數(shù)據(jù)插入到表“s" -------動態(tài)分區(qū)插入

17.insert overwrite(into) table employees? partition (county = "US",state)

? ? select ...,se.cnty,se.st from staged_employees se where se.cnty = "US" ;

? ? //把表“se”中的數(shù)據(jù)動態(tài)和靜態(tài)結(jié)合插入到表“s”中

屬性名稱缺省值描述

hive.exec.dynamic.partitionfalse設(shè)置成true滔蝉,表示開啟動態(tài)分區(qū)功能

hive.exec.dynamic.partition.modestrict設(shè)置成nonstrict击儡,表示允許所有分區(qū)都是動態(tài)的

hive.exec.max.dynamic.partitions.pernode100每個mapper或reducer可以創(chuàng)建的最大動態(tài)分區(qū)個數(shù)。如果某個mapper或reducer嘗試創(chuàng)建大于這個值得分區(qū)的話則會拋出一個致命錯誤信息

hive.exec.max.dynamic.partitions+1000一個動態(tài)分區(qū)創(chuàng)建語句可以創(chuàng)建的最大動態(tài)分區(qū)個數(shù)蝠引。如果超過這個值則會拋出一個致命錯誤信息

hive.exec.max.created.files10000全局可以創(chuàng)建的最大文件個數(shù)阳谍。有一個Hadoop計數(shù)器會跟蹤記錄創(chuàng)新了多少個文件蛀柴,如果超過這個值則會拋出一個致命錯誤信息

sethive.exec.dynamic.partition=true;

set hive.exec.dynamic.partition.mode=nonstrict矫夯;

set hive.exec.max.dynamic.partitions.pernode=1000

18.Hadoop fs -cp source_path target_path,? ? //導(dǎo)出數(shù)據(jù)

? ? insert overwrite local directory"/tmp/ca_employees"?

? ? select name,salary,address from employees where se.state = "CA";

19.Hive distribute by sorl by order by 的區(qū)別

distribute by:控制著在map端如何分區(qū)鸽疾,按照什么字段進行分區(qū),要注意均衡

sort by:每個reduce按照sort by 字段進行排序训貌,reduce的數(shù)量按照默認(rèn)的數(shù)量來進行制肮,當(dāng)然可以指定。

????????? ? ? ?最終可以進行歸并排序得出結(jié)果递沪。

????????????????適用于數(shù)據(jù)量比較大的排序場景豺鼻。

order by:reduce只有一個,在一個reduce中完成排序款慨,使用于數(shù)據(jù)量小的場景儒飒。

20.都是kill子任務(wù):

-- kill job:

hadoop job? -kill job_1537547243219_0058

-- kill application:

yarn application -kill application_1537547243219_0056

HiveQL之Sort by、Distribute by檩奠、Cluster by桩了、Order By詳解

在這里解釋一下select語法中的order by、sort by埠戳、distribute by圣猎、cluster by、order by語法乞而。

一送悔、order by語法

在hiveQL中Order by語法類似于sql語言中的order by語法。

colOrder: ( ASC | DESC )

colNullOrder: (NULLS FIRST | NULLS LAST)?????????? -- (Note: Available in Hive 2.1.0 and later)

orderBy: ORDER BY colName colOrder? colNullOrder? (',' colName colOrder? colNullOrder?)*

query: SELECT expression (',' expression)* FROM src orderBy

有一些限制在order by子句中爪模,在嚴(yán)格模式下(strict)欠啤,order by子句必須帶有以limit子句。Limit子句不是必須的屋灌,如果你設(shè)置hive.mapred.mode是非嚴(yán)格模式(nostrict)洁段。原因是為了增強全局排序的結(jié)果,這里只有一個reduce去進行最終的排序輸出共郭,如果輸出結(jié)果集行集太大祠丝,這單獨的reduce可能需要花費非常長的時間去處理。

注意除嘹,這列必須使用的名字写半,而不能指定位置號,然而在hive 0.11.0以后尉咕,在做了下面配置之后列可以指定序列號叠蝇,如下:

1)從hive0.11.0到2.1.x,設(shè)置hive.groupby.orderby.position.alias?是true(默認(rèn)值是false)年缎。

2)從hive2.2.0以后悔捶,hive.orderby.position.alias默認(rèn)是ture铃慷。

Order by默認(rèn)排序是asc。

在hive 2.1.0以后蜕该,被選擇排序的每個列是null在order by子句是支持的犁柜。默認(rèn)null排序規(guī)則是asc(升序)是nulls first,當(dāng)默認(rèn)的排序規(guī)則是desc(時)是nulls last

二堂淡、sort by語法

在hiveQL中sort by語法類似于sql語言中的order by語法馋缅。

colOrder: ( ASC | DESC )

sortBy: SORT BY colName colOrder? (',' colName colOrder?)*

query: SELECT expression (',' expression)* FROM src sortBy

Hive中被用來sort by排序的行的排序操作發(fā)生在發(fā)送這些行到reduce之前。排序的次序依賴于排序列的類型淤齐,如果列是數(shù)值類型股囊,那么排序次序按照數(shù)值排序,如果列式字符串類型更啄,那么排序次序?qū)凑兆值渑判颉?/p>

1稚疹、sort by和order by的不同點

Hive sort by的排序發(fā)生在每個reduce里,order by和sort by之間的不同點是前者保證在全局進行排序祭务,而后者僅保證在每個reduce內(nèi)排序内狗,如果有超過1個reduce,sort by可能有部分結(jié)果有序义锥。

注意:它也許是混亂的作為單獨列排序?qū)τ趕ort by和cluster by柳沙。不同點在于cluster by的分區(qū)列和sort by有多重reduce,reduce內(nèi)的分區(qū)數(shù)據(jù)時一致的拌倍。

通常赂鲤,數(shù)據(jù)在每個reduce排序通過用戶指定的規(guī)則,如下示例:

SELECT key, value FROM src SORT BY key ASC, value DESC

查詢有兩個reduce柱恤,查詢結(jié)果如下:

0?? 5

0?? 3

3?? 6

9?? 1

0?? 4

0?? 3

1?? 1

2?? 5

2数初、設(shè)置排序類型

轉(zhuǎn)換后,參數(shù)類型一般認(rèn)為是string類型梗顺,意味著數(shù)值類型將按照字典排序方式進行排序泡孩,克服這一點,第二個select語句可以在sort by之前被使用寺谤。

FROM (FROM (FROM src

??????????? SELECT TRANSFORM(value)

??????????? USING 'mapper'

??????????? AS value, count) mapped

????? SELECT cast(value as double) AS value, cast(count as int) AS count

????? SORT BY value, count) sorted

SELECT TRANSFORM(value, count)

USING 'reducer'

AS whatever

三仑鸥、Cluster By 和Distribute By語法

Cluster by和distribute by主要用在進行Transform/Map-Reduce腳本。但是变屁,他有時可以應(yīng)用在select語句眼俊,如果有一個子查詢需要分區(qū)和排序?qū)τ谳敵鼋Y(jié)果集。

Cluster by是一個捷徑對于包含distribute by和sort by的語句敞贡。

Hive使用distribute by中的列去分發(fā)行到每個reduce中泵琳,所有同樣的distribute by列的行將發(fā)送到同一個reduce。然而誊役,分發(fā)并不保證clustering和sorting的屬性在分發(fā)關(guān)鍵字获列。

例如,我們按照x進行distribute by在5行數(shù)據(jù)到2個reduce中:

x1

x2

x4

x3

x1

Reduce 1 得到的數(shù)據(jù):

x1

x2

x1

Reduce 2 得到的數(shù)據(jù):

x4

x3

注意:這所有制是x1的行確保被分發(fā)到通一個reduce中蛔垢,但是击孩,他們不能保證在集合中會在相鄰的位置。

相比之下鹏漆,如果我們使用cluster by x巩梢,這兩個reduce將進一步在x上進行排序。

Reduce 1得到數(shù)據(jù):

x1

x1

x2

Reduce 2得到數(shù)據(jù):

x3

x4

不能替代cluster by艺玲,用戶可以指定distribute by和sort by括蝠,同樣,分區(qū)列和排序列可以是不同的饭聚,通常情況忌警,分區(qū)類是排序類的前綴,但是他并不是必須的秒梳。

SELECT col1, col2 FROM t1 CLUSTER BY col1

SELECT col1, col2 FROM t1 DISTRIBUTE BY col1

SELECT col1, col2 FROM t1 DISTRIBUTE BY col1 SORT BY col1 ASC, col2 DESC

FROM (

FROM pv_users

MAP ( pv_users.userid, pv_users.date )

USING 'map_script'

AS c1, c2, c3

DISTRIBUTE BY c2

SORT BY c2, c1) map_output

INSERT OVERWRITE TABLE pv_users_reduced

REDUCE ( map_output.c1, map_output.c2, map_output.c3 )

USING 'reduce_script'

AS date, count;

20.count(1)和count(*)的區(qū)別

count(*)表示檢索表中所有列法绵,并統(tǒng)計記錄數(shù),包括重復(fù)列和空值酪碘。

count(1)中1表示表中的第一列朋譬,即檢索表中第一列,并統(tǒng)計第一列不為空的記錄數(shù)

21.concat兴垦、concat_ws徙赢、group_concat函數(shù)用法

一、concat()函數(shù)可以連接一個或者多個字符串

  CONCAT(str1,str2,…)?返回結(jié)果為連接參數(shù)產(chǎn)生的字符串探越。如有任何一個參數(shù)為NULL?狡赐,則返回值為?NULL。

  select?concat('11','22','33'); ? ??112233

二扶关、CONCAT_WS(separator,str1,str2,...)?

  是CONCAT()的特殊形式阴汇。第一個參數(shù)是其它參數(shù)的分隔符。分隔符的位置放在要連接的兩個字符串之間节槐。分隔符可以是一個字符串搀庶,也可以是其它參數(shù)。

  ? select?concat_ws(',','11','22','33'); ?? 11,22,33

三铜异、group_concat()分組拼接函數(shù)

  group_concat([DISTINCT]?要連接的字段?[Order?BY?ASC/DESC?排序字段]?[Separator?'分隔符'])

  對下面的一組數(shù)據(jù)使用?group_concat()

  | id |name

  |1?|?10|

  |1?|?20|

  |1?|?20|

  |2?|?20|

  |3?|?200???|

  |3?|?500???|

  1哥倔、select?id,group_concat(name)?from?aa?group?by?id;

  |1?|?10,20,20|

  |2?|?20?|

  |3?|?200,500|

  2、select?id,group_concat(name?separator?';')?from?aa?group?by?id;

  |1?|?10;20;20?|

  |2?|?20|

  |3?|?200;500???|

  3揍庄、select?id,group_concat(name?order?by?name?desc)?from?aa?group?by?id;

  |1?|?20,20,10???|

  |2?|?20|

  |3?|?500,200|

  4咆蒿、select?id,group_concat(distinct?name)?from?aa?group?by?id;

  |1?|?10,20|

  |2?|?20???|

  |3?|?200,500?|

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子沃测,更是在濱河造成了極大的恐慌缭黔,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒂破,死亡現(xiàn)場離奇詭異馏谨,居然都是意外死亡,警方通過查閱死者的電腦和手機附迷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門惧互,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喇伯,你說我怎么就攤上這事喊儡。” “怎么了稻据?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵艾猜,是天一觀的道長。 經(jīng)常有香客問我攀甚,道長箩朴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任秋度,我火速辦了婚禮炸庞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荚斯。我一直安慰自己埠居,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布事期。 她就那樣靜靜地躺著滥壕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兽泣。 梳的紋絲不亂的頭發(fā)上绎橘,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音唠倦,去河邊找鬼称鳞。 笑死,一個胖子當(dāng)著我的面吹牛稠鼻,可吹牛的內(nèi)容都是我干的冈止。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼候齿,長吁一口氣:“原來是場噩夢啊……” “哼熙暴!你這毒婦竟也來了闺属?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤周霉,失蹤者是張志新(化名)和其女友劉穎掂器,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诗眨,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡唉匾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年孕讳,在試婚紗的時候發(fā)現(xiàn)自己被綠了匠楚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡厂财,死狀恐怖芋簿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情璃饱,我是刑警寧澤与斤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站荚恶,受9級特大地震影響撩穿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谒撼,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一食寡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧廓潜,春花似錦抵皱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至悼院,卻和暖如春伤为,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背据途。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工绞愚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人昨凡。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓爽醋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親便脊。 傳聞我的和親對象是個殘疾皇子蚂四,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

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

  • 好記性不如爛筆頭,何況記性不好本文都來自hive文檔, 記下來方便查詢。 Database操作 create da...
    aaron1993閱讀 1,995評論 0 1
  • 時間:2017-08-16 19:36:53來源:CSDN Hive 是基于Hadoop 構(gòu)建的一套數(shù)據(jù)倉庫分析系...
    majyer閱讀 1,481評論 0 2
  • Hive 是基于Hadoop 構(gòu)建的一套數(shù)據(jù)倉庫分析系統(tǒng)遂赠,它提供了豐富的SQL查詢方式來分析存儲在Hadoop 分...
    三萬_chenbing閱讀 12,148評論 0 10
  • 一久妆、創(chuàng)建表 創(chuàng)建新表hive> CREATE TABLE t_hive (a int, b int, c int)...
    BestFei閱讀 3,384評論 0 2
  • 信息分為有效和無效。 看有效信息跷睦,聽有效信息筷弦,說有效信息。 有事情就動腦子想一想抑诸,該說什么烂琴,不該說什么。
    New_Riland閱讀 523評論 0 0