這篇文章主要講解了“ hive中使用sql語(yǔ)句需要注意什么問(wèn)題”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“ hive中使用sql語(yǔ)句需要注意什么問(wèn)題”吧!
創(chuàng)新互聯(lián)建站專注于木壘哈薩克企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站定制開(kāi)發(fā)。木壘哈薩克網(wǎng)站建設(shè)公司,為木壘哈薩克等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì)網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
最近在熟悉hive,使用hive中的sql語(yǔ)句過(guò)程中出現(xiàn)了一些問(wèn)題。
1,hive中的insert into語(yǔ)句
hive> select * from t_hive2; OK 16 2 3 61 12 13 41 2 31 17 21 3 71 2 31 1 12 34 11 2 34 Time taken: 0.218 seconds hive> insert into t_hive2 values(122,34,2); FAILED: Parse Error: line 1:12 mismatched input 't_hive2' expecting TABLE near 'into' in insert clause
從上面可以看出,hive是不支持insert into 語(yǔ)句的
2,不支持Date和DateTime類型
hive> alter table t_hive2 add columns (time_show Date); FAILED: Error in semantic analysis: DATE and DATETIME types aren't supported yet. Please use TIMESTAMP instead
3,hive的表分為外部表和內(nèi)部表
Hive 創(chuàng)建內(nèi)部表時(shí),會(huì)將數(shù)據(jù)移動(dòng)到數(shù)據(jù)倉(cāng)庫(kù)指向的路徑;若創(chuàng)建外部表,僅記錄數(shù)據(jù)所在的路徑,不對(duì)數(shù)據(jù)的位置做任何改變。
在刪除表的時(shí)候,內(nèi)部表的元數(shù)據(jù)和數(shù)據(jù)會(huì)被一起刪除, 而外部表只刪除元數(shù)據(jù),不刪除數(shù)據(jù)。這樣外部表相對(duì)來(lái)說(shuō)更加安全些,數(shù)據(jù)組織也更加靈活,方便共享源數(shù)據(jù)。
4,hive中兩個(gè)表鏈接時(shí)和以前有些不同
hive> select * > from t_hive,t_hive2 > where t_hive.a=t_hive2.b; FAILED: Parse Error: line 2:11 mismatched input ',' expecting EOF near 't_hive'
5, 內(nèi)置函數(shù)查看命令(show functions;desc function 函數(shù)名)
hive> desc function when; OK There is no documentation for function 'when' Time taken: 0.095 seconds hive> desc function rand; OK rand([seed]) - Returns a pseudorandom number between 0 and 1 Time taken: 0.078 seconds
6,hive中不支持truncate table 表名的形式存在(也包括 delete from 表名),可通過(guò) hive>dfs -rmr /user/hive/warehouse/表名來(lái)清空該表下的數(shù)據(jù),以便保持表元數(shù)據(jù)信息不丟失;或者通過(guò)create table 表名 like 表名,也可以。
hive> truncate table t_hive; FAILED: Parse Error: line 1:0 cannot recognize input near 'truncate' 'table' 't_hive' hive> delete from table t_hive; Usage: delete [FILE|JAR|ARCHIVE][ ]*
7,hive中不支持 in (子查詢語(yǔ)句),比如: in (select id from 表名) .可以通過(guò)內(nèi)連接或者 半連接 from 表1 left semi join 表2 on (表1.列名 = 表2.列名),表2只能在on中出現(xiàn),不能在select中引用
8,hive中在不需要全局排序的情況下,寫排序語(yǔ)句時(shí),最好用distribute by 表名.字段名 sort by 表名.字段名 asc | desc 的形式,盡量不用order by形式(只通過(guò)一個(gè)reduce來(lái)完成所有的排序結(jié)果)
感謝各位的閱讀,以上就是“ hive中使用sql語(yǔ)句需要注意什么問(wèn)題”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì) hive中使用sql語(yǔ)句需要注意什么問(wèn)題這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!