您好,登錄后才能下訂單哦!
Hive中的分區(qū)就是分目錄,把一個大的數(shù)據(jù)集根據(jù)業(yè)務(wù)需要分割成更小的數(shù)據(jù)集。那么在Hive中如何進行數(shù)據(jù)分區(qū)呢?分區(qū)時應(yīng)該注意什么樣的問題呢?它的分區(qū)數(shù)如何進行限制呢?
一、Hive only:加載分區(qū)數(shù)據(jù)的快捷方法
如果指定的分區(qū)不存在Hive將創(chuàng)建新的分區(qū)
這個命令將:
(1)如果不存在的話添加分區(qū)到表的元數(shù)據(jù);
(2)如果存在的話,創(chuàng)建子目錄:/user/hive/warehouse/call_logs/call_date=2014-10-02
(3)移動HDFS文件call-20141002.log到分區(qū)子目錄
二、查看、添加和移除分區(qū)
(1)查看當(dāng)前表分區(qū)
(2)使用ALTER TABLE添加或刪除分區(qū)
從已存在的分區(qū)目錄創(chuàng)建分區(qū)
(1)HDFS的分區(qū)目錄可以在Hive或Impala之外進行創(chuàng)建和數(shù)據(jù),比如:通過Spark或MapReduce應(yīng)用
(2) Hive中使用MSCK REPAIR TABLE命令來為已存在的表創(chuàng)建分區(qū)
四、什么時候使用分區(qū)
下列情況使用分區(qū)
(1)讀取整個數(shù)據(jù)集需要花費很長時間
(2)查詢幾乎只對分區(qū)字段進行過濾
(3)分區(qū)列有合理數(shù)量的不同的值
(4)數(shù)據(jù)生成或ETL過程是按文件或目錄名來分段數(shù)據(jù)的
(5)分區(qū)列值不在數(shù)據(jù)本身
五、什么時候不使用分區(qū)
(1)避免把數(shù)據(jù)分區(qū)到很多小數(shù)據(jù)文件
–不要對有太多惟一值的列進行分區(qū)
(2)注意:當(dāng)使用動態(tài)分區(qū)時容易發(fā)生
–比如:按照fname來分區(qū)客戶表會產(chǎn)生上千個分區(qū)
Hive進行分區(qū)
在舊的Hive版本中,動態(tài)分區(qū)默認(rèn)沒有啟用 ,通過設(shè)置這兩個屬性啟用:
但是在hive分區(qū)中我們應(yīng)該注意一些問題,比如:
(1)注意:Beeline設(shè)置的Hive變量只在當(dāng)前會話有效,系統(tǒng)管理員可以設(shè)置永久生效
(2)注意:如果分區(qū)列有很多唯一值,將會創(chuàng)建很多分區(qū)
另外,我們可以給Hive配置參數(shù)來限制分區(qū)數(shù) :
(1)hive.exec.max.dynamic.partitions.pernode
查詢在某個節(jié)點上可以創(chuàng)建的最大動態(tài)分區(qū)數(shù),默認(rèn)100
(2)hive.exec.max.dynamic.partitions
一個HiveQL語句可以創(chuàng)建的最大動態(tài)分區(qū)數(shù) ,默認(rèn)1000
(3)hive.exec.max.created.files
一個查詢總共可以創(chuàng)建的最大動態(tài)分區(qū)數(shù),默認(rèn)1000000
以上就是對Hive中進行數(shù)據(jù)分區(qū)做的分享。平時要多去掌握和了解,它對于大數(shù)據(jù)學(xué)習(xí)有著至關(guān)重要的作用。這里推薦“大數(shù)據(jù)cn”微信訂閱號,對于大數(shù)據(jù)的一些介紹還不錯,可以關(guān)注一下。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。