前面剛說(shuō)完外部和內(nèi)部表,這里接著往后看。
hive作為MapReduce的“翻譯官”,某種程度上來(lái)說(shuō),也有些不太夠格,雖然提供了類(lèi)似SQL的查詢(xún)功能,但是他的執(zhí)行效率實(shí)在是一言難盡。
查詢(xún)時(shí),hive會(huì)掃描整個(gè)表,一般表都不會(huì)小,所以這也導(dǎo)致了hive的運(yùn)行時(shí)長(zhǎng)問(wèn)題。為了提高效率,分區(qū)是個(gè)不錯(cuò)的想法。hive的分區(qū)表也由此而來(lái)。
分區(qū)表

其實(shí)這里也就是在加載數(shù)據(jù)后面加上了一個(gè) into table?

這個(gè)12行這里個(gè)人感覺(jué)會(huì)比較常用,可以留個(gè)心思。。。
分桶表
有一說(shuō)一,這個(gè)純屬套娃了,單個(gè)分區(qū)的數(shù)據(jù)量如果依舊大,那怎么辦?毫無(wú)疑問(wèn),繼續(xù)分,但繼續(xù)分下去就不叫分區(qū)了,他有了新的名字:分桶。

通過(guò)創(chuàng)建分桶表和創(chuàng)建普通表的對(duì)比,不難看出區(qū)別就在于第7行。套娃歸套娃,這個(gè)加載數(shù)據(jù)這里差別還是蠻大的。分桶的數(shù)據(jù)加載還需要 insert? ?select 這種古老儀式。
講了一些hive比較常用的知識(shí)點(diǎn),最后說(shuō)一下hive的表修改和刪除吧。
修改表與刪除表
修改這里呢,分為表名,列名,字段類(lèi)型的修改,另外新增字段,刪除字段,刪除表這里也說(shuō)了一下。說(shuō)實(shí)話(huà)這里簡(jiǎn)單歸簡(jiǎn)單,但是容易記混,畢竟這和SQL的不一樣。

以上呢,就是hive的DDL知識(shí)部分了,接下來(lái)就是HQL的數(shù)據(jù)操作了,也是實(shí)打?qū)嵉闹匾糠帧?/p>
HQL-數(shù)據(jù)操作
首先自然是數(shù)據(jù)的導(dǎo)入了,要是卡在這一步后面就啥也干不了了。
其實(shí)這里也簡(jiǎn)單,語(yǔ)法是load data local inpath ‘’? into table當(dāng)然了這里都寫(xiě)了local了,自然是從本地導(dǎo)入數(shù)據(jù)了,如果還從hdfs里面導(dǎo)入,就會(huì)顯得你很呆。
要從hdfs里面導(dǎo)數(shù)據(jù)的話(huà),去掉上面的local就可以了。


這里比較簡(jiǎn)單,其實(shí)實(shí)際多操作幾遍就會(huì)了,就算不會(huì),回頭看看也花不了多久。
有完整的數(shù)據(jù)集自然是好的,就怕數(shù)據(jù)集斷斷續(xù)續(xù),加載完結(jié)果還漏了兩個(gè),需要手動(dòng)去補(bǔ)加上,那這種情況怎么辦呢?
插入數(shù)據(jù)


人麻了,import導(dǎo)入數(shù)據(jù),這種手段倒是第一次見(jiàn)。蠻新穎的,萬(wàn)一以后看到有誰(shuí)真的用這種手法,不能忘了暗罵一句憨批。
數(shù)據(jù)的導(dǎo)入都學(xué)了,接下來(lái)自然是導(dǎo)出了。導(dǎo)出代碼如下,比較奇怪的就是,導(dǎo)出不用制定數(shù)據(jù)儲(chǔ)存格式嗎?

當(dāng)然了,hive數(shù)據(jù)的導(dǎo)入和導(dǎo)出還可以用其他工具,如:Sqoop,DataX。這些后面都會(huì)了解到。
上述只說(shuō)了數(shù)據(jù)操作中的加載插入導(dǎo)入導(dǎo)出的基本操作,當(dāng)然了接下來(lái)就是重中之重了。就是傳說(shuō)中的HQL的DQL查詢(xún)語(yǔ)言了。
不得不說(shuō),不虧是SQL的克隆親兄弟。


這里不是很想說(shuō),這里做注解會(huì)顯得我比較菜雞。
關(guān)于后面的where,group by ,order by,甚至連窗口函數(shù)都與SQL別無(wú)二致,hive啊hive,你就不能有點(diǎn)自己的貨嗎?
元數(shù)據(jù)管理與儲(chǔ)存
接下宏觀(guān)的了解一下hive。在hive的具體使用中,最先面臨的問(wèn)題其實(shí)就是如何定義表結(jié)構(gòu),因?yàn)樗枰成鋒dfs中的結(jié)構(gòu)化數(shù)據(jù)。這時(shí)hive里面就需要描述清楚數(shù)據(jù)的列,字段等等信息。
metadata就是元數(shù)據(jù),它就是hive