精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試 | 不可不知的十大 Hive 調優技巧優秀實踐

大數據
Apache Hive是建立在Apache Hadoop之上的數據倉庫軟件項目,用于提供數據查詢和分析。Hive是Hadoop在HDFS上的SQL接口,它提供了類似于SQL的接口來查詢存儲在與Hadoop集成的各種數據庫和文件系統中的數據。

[[442967]]

Apache Hive是建立在Apache Hadoop之上的數據倉庫軟件項目,用于提供數據查詢和分析。Hive是Hadoop在HDFS上的SQL接口,它提供了類似于SQL的接口來查詢存儲在與Hadoop集成的各種數據庫和文件系統中的數據。可以說從事數據開發工作,無論是在平時的工作中,還是在面試中,Hive具有舉足輕重的地位,尤其是Hive的性能調優方面,不僅能夠在工作中提升效率而且還可以在面試中脫穎而出。在本文中,我將分享十個性能優化技術,全文如下。

1.多次INSERT單次掃描表

默認情況下,Hive會執行多次表掃描。因此,如果要在某張hive表中執行多個操作,建議使用一次掃描并使用該掃描來執行多個操作。

比如將一張表的數據多次查詢出來裝載到另外一張表中。如下面的示例,表my_table是一個分區表,分區字段為dt,如果需要在表中查詢2個特定的分區日期數據,并將記錄裝載到2個不同的表中。

  1. INSERT INTO temp_table_20201115 SELECT * FROM my_table WHERE dt ='2020-11-15'
  2. INSERT INTO temp_table_20201116 SELECT * FROM my_table WHERE dt ='2020-11-16'

在以上查詢中,Hive將掃描表2次,為了避免這種情況,我們可以使用下面的方式:

  1. FROM my_table 
  2. INSERT INTO temp_table_20201115 SELECT * WHERE dt ='2020-11-15' 
  3. INSERT INTO temp_table_20201116 SELECT * WHERE dt ='2020-11-16' 

這樣可以確保只對my_table表執行一次掃描,從而可以大大減少執行的時間和資源。

2.分區表

對于一張比較大的表,將其設計成分區表可以提升查詢的性能,對于一個特定分區的查詢,只會加載對應分區路徑的文件數據,因此,當用戶使用特定分區列值執行選擇查詢時,將僅針對該特定分區執行查詢,由于將針對較少的數據量進行掃描,所以可以提供更好的性能。值得注意的是,分區字段的選擇是影響查詢性能的重要因素,盡量避免層級較深的分區,這樣會造成太多的子文件夾。

現在問題來了,該使用哪些列進行分區呢?一條基本的法則是:選擇低基數屬性作為“分區鍵”,比如“地區”或“日期”等。

一些常見的分區字段可以是:

  • 日期或者時間

比如year、month、day或者hour,當表中存在時間或者日期字段時,可以使用些字段。

  • 地理位置

比如國家、省份、城市等

  • 業務邏輯

比如部門、銷售區域、客戶等等

  1. CREATE TABLE table_name ( 
  2.     col1 data_type, 
  3.     col2 data_type) 
  4. PARTITIONED BY (partition1 data_type, partition2 data_type,….); 

3.分桶表

通常,當很難在列上創建分區時,我們會使用分桶,比如某個經常被篩選的字段,如果將其作為分區字段,會造成大量的分區。在Hive中,會對分桶字段進行哈希,從而提供了中額外的數據結構,進行提升查詢效率。

與分區表類似,分桶表的組織方式是將HDFS上的文件分割成多個文件。分桶可以加快數據采樣,也可以提升join的性能(join的字段是分桶字段),因為分桶可以確保某個key對應的數據在一個特定的桶內(文件),所以巧妙地選擇分桶字段可以大幅度提升join的性能。通常情況下,分桶字段可以選擇經常用在過濾操作或者join操作的字段。

我們可以使用set.hive.enforce.bucketing = true啟用分桶設置。

當使用分桶表時,最好將bucketmapjoin標志設置為true,具體配置參數為:

  1. CREATE TABLE table_name  
  2. PARTITIONED BY (partition1 data_type, partition2 data_type,….) CLUSTERED BY (column_name1, column_name2, …)  
  3. SORTED BY (column_name [ASC|DESC], …)]  
  4. INTO num_buckets BUCKETS; 

4.對中間數據啟用壓縮

復雜的Hive查詢通常會轉換為一系列多階段的MapReduce作業,并且這些作業將由Hive引擎鏈接起來以完成整個查詢。因此,此處的“中間輸出”是指上一個MapReduce作業的輸出,它將用作下一個MapReduce作業的輸入數據。

壓縮可以顯著減少中間數據量,從而在內部減少了Map和Reduce之間的數據傳輸量。

我們可以使用以下屬性在中間輸出上啟用壓縮。

  1. set hive.exec.compress.intermediate=true
  2. set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec; 
  3. set hive.intermediate.compression.type=BLOCK; 

為了將最終輸出到HDFS的數據進行壓縮,可以使用以下屬性:

  1. set hive.exec.compress.output=true

下面是一些可以使用的壓縮編解碼器

  1. org.apache.hadoop.io.compress.DefaultCodec 
  2. org.apache.hadoop.io.compress.GzipCodec 
  3. org.apache.hadoop.io.compress.BZip2Codec 
  4. com.hadoop.compression.lzo.LzopCodec 
  5. org.apache.hadoop.io.compress.Lz4Codec 
  6. org.apache.hadoop.io.compress.SnappyCodec 

5.Map端JOIN

map端join適用于當一張表很小(可以存在內存中)的情況,即可以將小表加載至內存。Hive從0.7開始支持自動轉為map端join,具體配置如下:

  1. SET hive.auto.convert.join=true--  hivev0.11.0之后默認true 
  2. SET hive.mapjoin.smalltable.filesize=600000000; -- 默認 25m 
  3. SET hive.auto.convert.join.noconditionaltask=true-- 默認true,所以不需要指定map join hint 
  4. SET hive.auto.convert.join.noconditionaltask.size=10000000; -- 控制加載到內存的表的大小 

一旦開啟map端join配置,Hive會自動檢查小表是否大于hive.mapjoin.smalltable.filesize配置的大小,如果大于則轉為普通的join,如果小于則轉為map端join。

關于map端join的原理,如下圖所示:

首先,Task A(客戶端本地執行的task)負責讀取小表a,并將其轉成一個HashTable的數據結構,寫入到本地文件,之后將其加載至分布式緩存。

然后,Task B任務會啟動map任務讀取大表b,在Map階段,根據每條記錄與分布式緩存中的a表對應的hashtable關聯,并輸出結果

注意:map端join沒有reduce任務,所以map直接輸出結果,即有多少個map任務就會產生多少個結果文件。

6.向量化

Hive中的向量化查詢執行大大減少了典型查詢操作(如掃描,過濾器,聚合和連接)的CPU使用率。

標準查詢執行系統一次處理一行,在處理下一行之前,單行數據會被查詢中的所有運算符進行處理,導致CPU使用效率非常低。在向量化查詢執行中,數據行被批處理在一起(默認=> 1024行),表示為一組列向量。

要使用向量化查詢執行,必須以ORC格式(CDH 5)存儲數據,并設置以下變量。

  1. SET hive.vectorized.execution.enabled=true 

在CDH 6中默認啟用Hive查詢向量化,啟用查詢向量化后,還可以設置其他屬性來調整查詢向量化的方式,具體可以參考cloudera官網。

7.謂詞下推

默認生成的執行計劃會在可見的位置執行過濾器,但在某些情況下,某些過濾器表達式可以被推到更接近首次看到此特定數據的運算符的位置。

比如下面的查詢:

  1. select 
  2.     a.*, 
  3.     b.*  
  4. from  
  5.     a join b on (a.col1 = b.col1) 
  6. where a.col1 > 15 and b.col2 > 16 

如果沒有謂詞下推,則在完成JOIN處理之后將執行過濾條件**(a.col1> 15和b.col2> 16)**。因此,在這種情況下,JOIN將首先發生,并且可能產生更多的行,然后在進行過濾操作。

使用謂詞下推,這兩個謂詞**(a.col1> 15和b.col2> 16)**將在JOIN之前被處理,因此它可能會從a和b中過濾掉連接中較早處理的大部分數據行,因此,建議啟用謂詞下推。

通過將hive.optimize.ppd設置為true可以啟用謂詞下推。

  1. SET hive.optimize.ppd=true 

8.輸入格式選擇

Hive支持TEXTFILE, SEQUENCEFILE, AVRO, RCFILE, ORC,以及PARQUET文件格式,可以通過兩種方式指定表的文件格式:

  • CREATE TABLE … STORE AS :即在建表時指定文件格式,默認是TEXTFILE
  • ALTER TABLE … [PARTITION partition_spec] SET FILEFORMAT :修改具體表的文件格式

如果未指定文件存儲格式,則默認使用的是參數hive.default.fileformat設定的格式。

如果數據存儲在小于塊大小的小文件中,則可以使用SEQUENCE文件格式。如果要以減少存儲空間并提高性能的優化方式存儲數據,則可以使用ORC文件格式,而當列中嵌套的數據過多時,Parquet格式會很有用。因此,需要根據擁有的數據確定輸入文件格式。

9.啟動嚴格模式

如果要查詢分區的Hive表,但不提供分區謂詞(分區列條件),則在這種情況下,將針對該表的所有分區發出查詢,這可能會非常耗時且占用資源。因此,我們將下面的屬性定義為strict,以指示在分區表上未提供分區謂詞的情況下編譯器將引發錯誤。

  1. SET hive.partition.pruning=strict 

10.基于成本的優化

Hive在提交最終執行之前會優化每個查詢的邏輯和物理執行計劃。基于成本的優化會根據查詢成本進行進一步的優化,從而可能產生不同的決策:比如如何決定JOIN的順序,執行哪種類型的JOIN以及并行度等。

可以通過設置以下參數來啟用基于成本的優化。

  1. set hive.cbo.enable=true
  2. set hive.compute.query.using.stats=true
  3. set hive.stats.fetch.column.stats=true
  4. set hive.stats.fetch.partition.stats=true

可以使用統計信息來優化查詢以提高性能。基于成本的優化器(CBO)還使用統計信息來比較查詢計劃并選擇最佳計劃。通過查看統計信息而不是運行查詢,效率會很高。

收集表的列統計信息:

  1. ANALYZE TABLE mytable COMPUTE STATISTICS FOR COLUMNS; 

查看my_db數據庫中my_table中my_id列的列統計信息:

  1. DESCRIBE FORMATTED my_db.my_table my_id 

結論

 

本文主要分享了10個Hive優化的基本技巧,希望能夠為你優化Hive查詢提供一個基本的思路。再次感謝你的閱讀,希望本文對你有所幫助。

 

責任編輯:武曉燕 來源: 大數據技術與數倉
相關推薦

2023-09-20 09:00:00

2011-05-06 13:45:17

Linux服務器配置

2020-01-06 08:00:49

大數據分析數據技術

2012-03-16 17:15:43

JMP10數據分析

2024-08-12 08:00:00

人工智能開發AI編程助理

2011-11-09 13:46:51

可擴展架構

2016-11-22 08:20:32

2023-09-25 12:07:43

VS Code開發

2023-10-10 18:07:34

VS Code開發

2019-07-30 08:02:57

Python編程語言代碼

2021-08-12 16:02:22

Jupyter NotPython命令

2009-04-08 10:25:20

光棍休閑

2010-06-11 14:46:38

可路由協議

2015-06-10 10:56:50

iOS開發技巧

2020-11-30 13:12:04

Linux文本命令

2015-01-15 09:34:28

2009-06-10 09:08:13

WCF變更處理契約

2015-03-04 14:54:47

DockerIT管理基礎設施

2022-08-17 15:09:08

區塊鏈加密貨幣NFT

2010-08-16 10:22:00

虛擬化技術應用環境
點贊
收藏

51CTO技術棧公眾號

国产精品99一区| 亚洲一区二区国产| 波多野结衣之无限发射| 日本福利在线观看| 日本不卡免费在线视频| 超碰97人人做人人爱少妇| 日本少妇xxxx软件| 经典三级一区二区| 亚洲激情在线激情| 欧美日韩国产不卡在线看| 欧美在线视频精品| 亚洲精品护士| 少妇高潮 亚洲精品| 韩国三级hd中文字幕有哪些| 澳门av一区二区三区| 亚洲靠逼com| 欧美亚洲爱爱另类综合| 国产黄色大片网站| 日本中文字幕不卡| 97色在线观看| 日本精品人妻无码77777| 要久久爱电视剧全集完整观看 | 丁香六月综合激情| 国产精品激情av电影在线观看| 欧美日韩精品一区二区三区视频播放| 亚洲欧美成人vr| 欧美r级电影在线观看| 亚洲一二三区av| 高清在线视频不卡| 亚洲日本青草视频在线怡红院 | 污视频在线免费| 国内精品不卡在线| 国产精品电影观看| 久久久久久91亚洲精品中文字幕| 欧美亚洲不卡| 久久中文精品视频| 超碰97av在线| 亚洲AV无码久久精品国产一区| 中文字幕在线观看欧美| 国产日韩免费| 久久久久久国产精品| 黄色一级大片在线免费观看| 日韩av久操| 一本色道久久综合狠狠躁篇怎么玩| 亚洲欧洲国产视频| 久久伊人精品| 欧美一区永久视频免费观看| 在线观看免费的av| 欧美大片1688网站| 在线观看日韩av先锋影音电影院| 黄色片视频在线免费观看| 波多野结衣乳巨码无在线观看| 亚洲日本在线观看| 天天爱天天做天天操| 免费网站成人| 亚洲人成网站影音先锋播放| 精品国产福利视频| 日本精品性网站在线观看| 日韩精品一区二区三区国语自制| 亚洲午夜久久久久久尤物| 欧美精品一二区| 久草免费在线观看视频| 狠狠色狠狠色综合日日tαg| 欧美激情视频在线免费观看 欧美视频免费一 | 精品视频在线观看免费| 国产精品videosex极品| 欧美黑人又粗大| 国产精品1234区| 亚洲高清成人| 69精品小视频| 亚洲国产精品无码久久久| 视频一区二区三区在线| 国产精品高清网站| 在线观看国产小视频| 精品中文av资源站在线观看| 91沈先生播放一区二区| 成人午夜精品福利免费| av欧美精品.com| 欧美连裤袜在线视频| 3d成人动漫在线| 亚洲激情av在线| 特级西西444| 超碰在线资源| 欧美性生活久久| 九九热视频免费| 免费成人蒂法| 在线观看精品自拍私拍| 2025国产精品自拍| 在线播放精品| 国产精品美女999| 国产手机精品视频| 成人av在线电影| 日本在线免费观看一区| av网址在线播放| 色综合天天综合网国产成人综合天| 午夜视频你懂的| 深夜福利一区| 亚洲美女激情视频| 久久久久久久久久久久久女过产乱| 99成人精品| 91精品国产自产在线| 人妻妺妺窝人体色www聚色窝| 久久久久久免费毛片精品| 韩国黄色一级大片| 日韩毛片免费观看| 欧美成va人片在线观看| 久久久久久国产免费a片| 国内精品久久久久国产盗摄免费观看完整版 | 在线成人免费观看| 97精品人妻一区二区三区蜜桃| 成人嘿咻视频免费看| 欧美成人午夜视频| 99久久久无码国产精品免费蜜柚| 国产美女主播视频一区| 欧美日韩一区二区三区在线观看免 | 日韩亚洲精品视频| 日韩 欧美 中文| 国产高清不卡一区| 一区二区三区av| 松下纱荣子在线观看| 91精品欧美综合在线观看最新 | 一本色道久久综合亚洲精品酒店 | 2017亚洲天堂| 久久久久久久波多野高潮日日| 亚洲自拍另类欧美丝袜| 中文字幕在线播放| 精品成人乱色一区二区| www.色.com| 婷婷综合在线| 国产精品自产拍在线观看中文| 亚洲欧美一区二区三| 亚洲精品国久久99热| 亚洲最大成人在线观看| 欧美码中文字幕在线| 欧美一级大片在线观看| 欧美一区二区三区黄片| 亚洲精品视频一区二区| av亚洲天堂网| 欧美高清视频在线观看mv| 国产不卡av在线免费观看| 午夜影院在线视频| 欧美日韩一区二区在线播放| 800av在线播放| 伊人精品在线| 国产美女精品在线观看| 18在线观看的| 日韩亚洲欧美在线观看| 九九视频免费在线观看| 国产成人免费视频网站高清观看视频| 国产精品h视频| 99tv成人影院| 九九热99久久久国产盗摄| 国产福利第一视频| 亚洲一区二区三区四区五区中文| 美女又黄又免费的视频| 欧美freesex交免费视频| 亚洲一区二区三区在线免费观看| 麻豆网站在线观看| 欧美一区二区三区在线| 欧美日韩免费做爰视频| 成人精品一区二区三区中文字幕| 91免费黄视频| 欧美欧美黄在线二区| 国产www精品| 日本中文字幕在线视频| 欧美高清一级片在线| 三级影片在线看| 成人综合婷婷国产精品久久蜜臀 | 国产成人一级电影| 日韩欧美精品免费| 无码日韩精品一区二区免费| 国产精品高清在线| 最新国产露脸在线观看| 日韩精品一区二区在线| 中文字幕激情小说| 欧美国产一区二区在线观看| 天天操精品视频| 亚洲福利免费| 视频一区二区三区在线观看 | 欧美电影一区二区三区| 久久精品女人毛片国产| 久久蜜桃av一区二区天堂| 男女男精品视频站| 欧美视频网站| 六十路精品视频| 国产精品久久久久久av公交车| 国产+人+亚洲| a天堂在线资源| 日韩欧美精品在线视频| 精品国产一区二区三区四| 国产精品乱码一区二区三区软件| 黑人无套内谢中国美女| 久久视频一区| 成年丰满熟妇午夜免费视频 | 日韩精品在线看| 国产精品高潮呻吟av| 精品久久久国产| 九九热久久免费视频| 成人综合婷婷国产精品久久蜜臀| 国产精品入口免费软件| 亚洲国产专区| 只有这里有精品| 激情综合网站| 国产伦精品一区二区三区四区视频| av高清一区| 午夜精品久久久久久久99热浪潮| 午夜在线观看视频| 日韩国产欧美精品一区二区三区| 97精品人妻一区二区三区香蕉| 性做久久久久久免费观看| 青青草华人在线视频| 91在线视频官网| 国产男女无遮挡猛进猛出| 日韩影院在线观看| 国产精品999视频| 自拍欧美日韩| 一级特黄录像免费播放全99| 亚洲美女15p| 国产午夜精品在线| 日韩精品一区二区三区免费视频| 国产精品久久久久久久美男| 欧美gv在线| 久久久久久免费精品| www红色一片_亚洲成a人片在线观看_| 亚洲区免费影片| 无码国产伦一区二区三区视频 | 国产精品丝袜视频| 成人福利av| 69**夜色精品国产69乱| 伊人影院在线视频| 久久久999成人| 午夜在线小视频| 丝袜情趣国产精品| 一级毛片视频在线| 在线播放国产精品| 黄视频在线观看免费| 国产视频欧美视频| 污污视频在线观看网站| 欧美成人精品1314www| 国产手机精品视频| 日韩亚洲欧美中文三级| 国产99久一区二区三区a片 | 亚洲欧美手机在线| 久久精品国产精品亚洲红杏| 99视频在线视频| 秋霞成人午夜伦在线观看| 999精品网站| 日韩制服丝袜先锋影音| 国产精品人人妻人人爽人人牛| 亚洲欧美清纯在线制服| 国产亚洲欧美在线视频| 亚洲永久免费| 日韩免费高清在线| 日本欧美大码aⅴ在线播放| 中文字幕第21页| 蜜臀av在线播放一区二区三区| 久久久久久三级| 麻豆一区二区99久久久久| 国产九九在线视频| 久草在线在线精品观看| 国产又粗又猛大又黄又爽| 国产精品香蕉一区二区三区| 免费看91视频| 99视频一区二区三区| 男女黄床上色视频| 日本一区二区三区四区在线视频| 人妻无码一区二区三区免费| 国产精品对白交换视频 | 韩国免费在线视频| 中文字幕亚洲图片| 超碰在线网址| 国内精品一区二区三区四区| 裤袜国产欧美精品一区| 国产在线精品播放| 国产精品美女在线观看直播| 久久久久久草| 久久美女精品| 女人帮男人橹视频播放| 米奇777在线欧美播放| 91视频免费版污| 国产精品一区二区你懂的| 在线观看一区二区三区四区| 久久亚洲一区二区三区明星换脸| 女人18毛片毛片毛片毛片区二| 亚洲精品ww久久久久久p站 | 亚洲综合精品四区| 五月婷婷丁香色| 成人手机电影网| 国产精品成人无码免费| 一区二区三区色| 伊人久久久久久久久久久久 | 黄色在线网站| 欧美二区在线播放| 超薄肉色丝袜脚交一区二区| 97人人模人人爽人人少妇| 校园春色另类视频| 国产精品久久久久毛片软件| 国产精品免费无码| 亚洲综合区在线| 亚洲国产精品无码久久久| 日韩免费看网站| 91高清在线| 69**夜色精品国产69乱| 韩国三级成人在线| 免费国产一区二区| 狠狠干成人综合网| gogogo高清免费观看在线视频| 粉嫩久久99精品久久久久久夜| 18啪啪污污免费网站| 狠狠操狠狠色综合网| 国产成人久久精品77777综合| 亚洲新声在线观看| 男人久久天堂| 成人免费91在线看| 91久久夜色精品国产按摩| 精品一区二区中文字幕| 国产成人在线视频免费播放| 国产视频123区| 色噜噜狠狠一区二区三区果冻| 欧美 日韩 国产 精品| 日韩中文字幕在线看| 蜜桃精品在线| 麻豆91蜜桃| 一区二区日韩免费看| 亚洲 自拍 另类 欧美 丝袜| 最新高清无码专区| 在线观看黄色网| 夜夜躁日日躁狠狠久久88av| 欧美成人黑人| 久草热久草热线频97精品| 国产精品99免费看| 国产老头和老头xxxx×| 最新成人av在线| 国产一区二区三区视频免费观看| 国产一区二区日韩精品欧美精品| 伊人久久av| 蜜桃999成人看片在线观看| 在线日韩欧美| 亚洲香蕉中文网| 精品国产精品自拍| 国产91麻豆视频| 久久青草福利网站| 粉嫩av一区二区| 黄色国产一级视频| 99久久久国产精品免费蜜臀| 日韩污视频在线观看| 亚洲精品福利在线| 亚洲精品一区| 日本午夜精品电影| 免费观看在线色综合| 青青青视频在线播放| 欧美日韩国产电影| 国产在线观看免费麻豆| 91pron在线| 在线精品一区二区| 中文字幕在线免费看线人 | 17c丨国产丨精品视频| 国产福利精品一区| 国产精品白浆一区二小说| 亚洲精品97久久| 不卡av播放| 亚洲精品成人a8198a| 精品一区二区影视| 久久久久亚洲AV| 日韩精品中文字| 国产一区一一区高清不卡| 亚洲精品一卡二卡三卡四卡| 久久av中文字幕片| 久久激情免费视频| 日韩av中文字幕在线| 精品欧美日韩精品| 在线视频一二三区| av在线不卡网| 欧美激情一区二区三区免费观看| 日韩视频在线观看免费| 亚洲一区二区三区免费| 欧美精品一区免费| 国产精品美女久久久久aⅴ | wwwwww国产| 中文字幕精品久久| 91成人在线精品视频| 男人添女人下面高潮视频| 国产日韩高清在线| 亚洲精品成av人片天堂无码| 91福利视频在线观看| 欧美好骚综合网| 亚洲国产第一区| 欧美日韩五月天| tube8在线hd| 无码免费一区二区三区免费播放| 国产精品自拍毛片| 视频一区二区三区四区五区| 久久午夜a级毛片| 亚洲宅男一区| 伊人av在线播放| 欧美在线视频不卡| 丁香花在线电影小说观看| 色女人综合av| 99久久久久久99| 99热这里只有精品99|