91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hive架構、傾斜優化、sql及常見問題

發布時間:2020-07-18 05:39:11 來源:網絡 閱讀:532 作者:afeiye 欄目:大數據

Hive架構

Hive架構、傾斜優化、sql及常見問題
hive架構如圖所示,client跟driver交互,通過parser、planner、optimizer,最后轉為mapreduce運行,具體步驟如下
Hive架構、傾斜優化、sql及常見問題

  1. driver輸入一條sql,會由parser轉為抽象語法樹AST,這個是沒有任務元數據信息的語法樹;
  2. 語法分析器再把AST轉為一個一個的QueryBlock,一個QueryBlock包含輸入、輸出、計算邏輯,也就是說一個子程序就是QueryBlock
  3. planner遍歷所有的QueryBlock,轉為一個個的Operator(算子,比如tablescanOperator),最后形成OperatorTree;
  4. 優化器對OperatorTree進行優化,包含謂詞下推、剪枝等;
  5. 然后遍歷OperatorTree,分割成多個mapreduce作業,形成物理計劃
  6. 之后進行物理優化,比如是否進行map join等

Hive 數據傾斜優化

  1. 對于group by可以有兩個優化點
    map聚合:set hive.map.aggr=true,會在map端對相同key先聚合一下;
    分發為兩道作業:set hive.groupby.skewindata=true,會對原來的一道作業分為兩道作業,第一道隨機分配key,第二道再按key分配
    注意:對于部分聚合函數有用,比如sum和count,但是完全聚合函數無用,比如avg
  2. 對于join也有兩個優化點
    map join:新版hive中默認開啟set hive.auto.convert.join=true ,join的左表如果足夠小,會直接把左表內容加載到內存中
    兩道作業:set hive.optimize.skewjoin = true;set hive.skewjoin.key = skew_key_threshold (default = 100000)這個兩道作業跟groupby不一樣,這個是說把超過10萬行的數據單獨啟一道map join,最后再把結果聚合

hive常見問題

  1. hive不支持非等值join
    錯誤:select from a inner join b on a.id<>b.id
    替代方法:select
    from a inner join b on a.id=b.id and a.id is null;
  2. hive不支持非join連接
    錯誤:select from dual a,dual b where a.key = b.key;
    正確:select
    from dual a join dual b on a.key = b.key;
  3. hive不支持or
    錯誤:select from a inner join b on a.id=b.id or a.name=b.name
    替代方法:select
    from a inner join b on a.id=b.id union all select * from a inner join b on a.name=b.name
  4. hive內部表和外部表的區別
    創建表時:創建內部表時,會將數據移動到數據倉庫指向的路徑;若創建外部表,僅記錄數據所在的路徑, 不對數據的位置做任何改變。
    刪除表時:在刪除表的時候,內部表的元數據和數據會被一起刪除, 而外部表只刪除元數據,不刪除數據。這樣外部表相對來說更加安全些,數據組織也更加靈活,方便共享源數據
  5. sortby、orderby、distributeby
    order by會引發全局排序;會導致所有的數據集中在一臺reducer節點上,然后進行排序,這樣很可能會超過單個節點的磁盤和內存存儲能力導致任務失敗。
    distribute by + sort by就是該替代方案,被distribute by設定的字段為KEY,數據會被HASH分發到不同的reducer機器上,然后sort by會對同一個reducer機器上的每組數據進行局部排序。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蒙自县| 兴仁县| 陇西县| 梅河口市| 磐安县| 会昌县| 禄劝| 汝城县| 青岛市| 大城县| 惠东县| 太仆寺旗| 香格里拉县| 河间市| 固原市| 郴州市| 六枝特区| 库伦旗| 上高县| 汶川县| 桓仁| 河津市| 清徐县| 孝义市| 徐汇区| 平定县| 察隅县| 汕尾市| 友谊县| 繁峙县| 六枝特区| 封开县| 呼伦贝尔市| 闽侯县| 新营市| 莒南县| 青冈县| 四川省| 昔阳县| 吉首市| 新平|