成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章徹底掌握 Hive 中的 Order/Sort/Cluster/Distribute by和 Bucket 桶表

運維 數據庫運維
本篇文章,我們來總結下,HIVE 中的 order/sort/cluster/distribute by 和 BUCKET 桶表。

[[434538]]

大家好,我是明哥!

本片文章,我們來總結下,HIVE 中的 order/sort/cluster/distribute by 和 BUCKET 桶表

1 ORDER BY

  • ORDER BY 會對 SQL 的最終輸出結果數據做全局排序;
  • ORDER BY 底層只會有一個Reducer 任務 (多個Reducer無法保證全局有序);
  • 當然只有一個 Reducer 任務時,如果輸入數據規模較大,會消耗較長的計算時間;
  • ORDER BY 默認的排序順序是遞增 ascending (ASC).
  • 示例語句:select distinct cust_id,id_no,part_date from ads_api_cda_basic_info_parquet_pt order by cust_id;

2 SORT BY

  • SORT BY 不是對 SQL 的最終輸出結果數據做排序,而是對 MAP 端的輸出數據,在進入 reducer 前,根據指定的字段進行排序;
  • SORT BY 不會影響 REDUCER 的個數;
  • SORT BY 只會保證每個 reducer 內部的數據的順序性,而不會保證 SQL 最終輸出結果的全局有序性;
  • 示例語句:select distinct cust_id,id_no,part_date from ads_api_cda_basic_info_parquet_pt SORT by cust_id;圖片

3 DISTRIBUTE BY

  • DISTRIBUTE BY 指定了將 MAP 端的輸出記錄交給哪個 reducer 進一步處理的分發規則;
  • DISTRIBUTE BY 不會影響 REDUCER 的個數;
  • 具有相同的 Distribute By 字段的MAP端的輸出數據,會被分發給同一個 reducer 進行處理 (默認是采用hash取模算法);
  • Distribute By 并不會保證每個 REDUCER 內部的所有記錄的順序性;
  • 示例語句:select distinct cust_id,id_no,part_date from ads_api_cda_basic_info_parquet_pt distribute by cust_id;圖片

  • DISTRIBUTE BY 和 SORT BY 配合使用,可以保證每個 REDUCER 內部的所有記錄的順序性(此時,Distribute By 分區字段 和 SORT BY 排序字段,可以是不同的字段);
  • 示例語句:select distinct cust_id,id_no,part_date from ads_api_cda_basic_info_parquet_pt distribute by cust_id sort by id_no;
  • DISTRIBUTE BY 和 SORT BY 配合使用,并選用合適的 DISTRIBUTE BY 字段,可以解決以下問題:
    • Map輸出的文件大小不均;
    • Reduce輸出文件大小不均;
    • 小文件過多;
    • 文件超大;

4 CLUSTER BY

  • CLUSTER BY 等價于配合使用 DISTRIBUTE BY 和 SORT BY;
  • CLUSTER BY底層的 Distribute By 分區字段 和 SORT BY 排序字段,是同一個字段;
  • CLUSTER BY 不會影響 REDUCER 的個數;
  • 示例語句:select distinct cust_id,id_no,part_date from ads_api_cda_basic_info_parquet_pt cluster by cust_id;

CLUSTER BY in spark web ui

5 BUCKET 桶表

HIVE中有 BUCKET 桶表,桶表具有以下優勢:

  • 桶表可以支持高效的 sampling 取樣;
  • 桶表對高效的 mapside joins 的支持更好;
  • 聲明桶表時,需要指定分桶字段和桶的個數(CLUSTERED BY(user_id) INTO 31 BUCKETS);
  • 桶表的寫入操作,在底層執行時,會自動添加 CLUSTER BY 子語句 以按桶表聲明時指定的分桶字段來分布數據;(如果是 0.x 或 1.x 的 HIVE 版本,需要配置參數 set hive.enforce.bucketing = true; HIVE 2.X 后,該參數被remove了,等價于總是TURE;)
  • 桶表的寫入操作,在底層執行時,會有reducer,且reducer的個數,會自動使用聲明桶表時指定的桶的個數;(如果是 0.x 或 1.x 的 HIVE 版本,需要配置參數 set hive.enforce.bucketing = true; HIVE 2.X 后,該參數被remove了,等價于總是TURE;)
  • 通過選用合適的分桶字段和分桶數,桶表可以有效管控表底層的小文件的個數,進而緩解數據傾斜問題和小文件問題;
  • 使用桶表來緩解數據傾斜問題和小文件問題時,所有的更改都在 DDL 這一層,不需要更改 DML 語句添加 CLUSTER/DISTRIBUTE BY 子語句,同時由于 DDL 是系統上線時或后續運維優化調整時的一次性的操作,增加了系統的彈性和運維優化的便利性;
  • 可以使用類似以下 DDL 語句來聲明 BUCKET 桶表,類似以下DML語句來操作桶表:
  1. ## DDL 
  2. CREATE TABLE bucket_tableA(user_id BIGINT, firstname STRING, lastname STRING) 
  3. COMMENT 'A bucketed copy of user_info' 
  4. PARTITIONED BY(ds STRING) 
  5. CLUSTERED BY(user_id) INTO 31 BUCKETS; 
  6. ## DML 
  7. INSERT OVERWRITE bucket_tableA select * from xx; 

INSERT OVERWRITE bucket_tableA SPARK WEB UI

 

責任編輯:武曉燕 來源: 明哥的IT隨筆
相關推薦

2024-06-25 08:18:55

2015-07-15 17:09:48

HiveHadoop分布式文件系統

2013-04-15 10:59:08

iOS開發ARC版本說明

2017-08-22 16:20:01

深度學習TensorFlow

2024-05-17 10:05:06

Java機制應用

2017-07-20 16:55:56

Android事件響應View源碼分析

2025-01-26 15:38:11

Spring事務編程式

2025-03-07 08:24:10

Javavolatilecount++

2020-10-09 08:15:11

JsBridge

2021-04-07 13:28:21

函數程序員異步

2019-07-23 08:55:46

Base64編碼底層

2021-11-30 20:12:00

FTP系統

2020-07-16 15:10:49

Pythonzip()可迭代對象

2016-07-01 14:55:07

開源數據庫

2021-05-21 09:01:56

Python繼承多態

2021-05-18 09:00:28

Pythonclass

2021-08-12 14:19:14

Slice數組類型內存

2024-05-10 08:19:59

arthasjava字節碼

2018-04-09 16:35:10

數據庫MySQLInnoDB

2021-11-12 07:43:34

版本HDFS工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久男女视频 | a欧美| 精品国产一区二区三区在线观看 | 日韩欧美在线播放 | 在线国产一区 | 免费在线观看黄色av | 精品三区 | 在线看片国产 | 国产一区二区影院 | 一二三四在线视频观看社区 | 天天操网 | 亚洲欧美综合 | 日韩精品在线看 | 日韩高清一区二区 | 久久久一区二区三区 | 综合色播| 国产成人99久久亚洲综合精品 | 日日做夜夜爽毛片麻豆 | 日韩一二三区 | 午夜爽爽男女免费观看hd | 夜夜骑首页 | 欧美精品一区二区三区视频 | 国产91在线 | 亚洲 | 欧美日韩成人 | 日韩免费高清视频 | 精品国产精品三级精品av网址 | 亚洲精品国产一区 | 激情视频网站 | 男女黄网站 | 亚洲国产成人精品久久久国产成人一区 | 国产成人午夜精品影院游乐网 | 国产午夜精品一区二区三区嫩草 | 国产精品99999999 | 亚洲精品乱码久久久久久9色 | 在线视频一区二区三区 | 日韩一区二区三区在线观看 | 最新国产精品精品视频 | 中文字幕一级毛片视频 | 日本国产一区二区 | 国产成人精品一区二区三区在线 | 国产精品中文字幕在线 |