chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Hive如何提升查詢效率

數(shù)據(jù)分析與開發(fā) ? 來源:數(shù)據(jù)社 ? 作者:數(shù)據(jù)社 ? 2021-11-18 15:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天分享一下Hive如何提升查詢效率。Hive作為最常用的數(shù)倉計算引擎,是我們必備的技能,但是很多人只是會寫Hql,并不會優(yōu)化,也不知道如何提升查詢效率,今天分享8條軍規(guī):

1、開啟FetchTask

一個簡單的查詢語句,是指一個沒有函數(shù)、排序等功能的語句,當開啟一個Fetch Task功能,就執(zhí)行一個簡單的查詢語句不會生成MapRreduce作業(yè),而是直接使用FetchTask,從hdfs文件系統(tǒng)中進行查詢輸出數(shù)據(jù),從而提高效率。

設置的方式:

Hive.fetch.task.conversion默認為minimal

修改配置文件hive-site.xml

hive.fetch.task.conversion
more

SomeselectqueriescanbeconvertedtosingleFETCHtask
minimizinglatency.Currentlythequeryshouldbesingle
sourcednothavinganysubqueryandshouldnothave
anyaggregationsordistincts(whichincurrsRS),
lateralviewsandjoins.
1.minimal:SELECTSTAR,FILTERonpartitioncolumns,LIMITonly
2.more:SELECT,FILTER,LIMITonly(+TABLESAMPLE,virtualcolumns)




或者當前session修改
hive>sethive.fetch.task.conversion=more;
執(zhí)行SELECTid,moneyFROMmlimit10;不走mr

2、合并中間表

一個日志文件中,每一行記錄,會有很多很多字段,四五十個字段很正常。實際分析中,常常使用少數(shù)幾個字段將原始的表中數(shù)據(jù),依據(jù)業(yè)務需求提取出要分析的字段,數(shù)據(jù)放入到對應的業(yè)務表(子表)中,實際的業(yè)務針對業(yè)務表進行分析。

在實際中,我們會發(fā)現(xiàn),有些業(yè)務處理,會有共同數(shù)據(jù)集用戶表、訂單表、商品表,三個表需要進行join的操作,join 會產(chǎn)生一個結果集,會有很多的業(yè)務是針對此jion結果集進行分析。

優(yōu)化:將眾多的業(yè)務中相同的中間結果集,抽取到一個Hive中的表中去。

3、合理使用分區(qū)表

外部表、分區(qū)表,結合使用,采用多級分區(qū)。數(shù)據(jù)采用存儲格式(textfile、orcfile、parquet)或者數(shù)據(jù)壓縮(snappy)。

明細數(shù)據(jù)我們一般采用按天分區(qū),對于特別大的表,可以采用子分區(qū),每個分區(qū)其實對應到HDFS上就是一個目錄。數(shù)據(jù)存儲方式我們可以采用parquet列式存儲,同時具有很好的壓縮性能;同時可以減少大量的表掃描和反序列化的時間。在OLAP查詢場景下,我們選擇需要的列信息進行查詢,而不是直接select * 查詢所有字段。

4、jvm重用

JVM重用是hadoop調優(yōu)參數(shù)的內(nèi)容,對hive的性能具有非常大的影響,特別是對于很難避免小文件的場景或者task特別多的場景,這類場景大多數(shù)執(zhí)行時間都很短。hadoop默認配置是使用派生JVM來執(zhí)行map和reduce任務的,這是jvm的啟動過程可能會造成相當大的開銷,尤其是執(zhí)行的job包含有成千上萬個task任務的情況。JVM重用可以使得JVM實例在同一個JOB中重新使用N次,N的值可以在Hadoop的mapre-site.xml文件中進行設置

mapred.job.reuse.jvm.num.tasks 1

也可在hive的執(zhí)行設置:

setmapred.job.reuse.jvm.num.tasks = 10;

JVM的一個缺點是,開啟JVM重用將會一直占用使用到的task插槽,以便進行重用,直到任務完成后才能釋放。如果某個“不平衡“的job中有幾個reduce task 執(zhí)行的時間要比其他reduce task消耗的時間多得多的話,那么保留的插槽就會一直空閑著卻無法被其他的job使用,直到所有的task都結束了才會釋放。

5、speculative execution(推測執(zhí)行)

所謂的推測執(zhí)行,就是當所有task都開始運行之后,Job Tracker會統(tǒng)計所有任務的平均進度,如果某個task所在的task node機器配置比較低或者CPU load很高(原因很多),導致任務執(zhí)行比總體任務的平均執(zhí)行要慢,此時Job Tracker會啟動一個新的任務(duplicate task),原有任務和新任務哪個先執(zhí)行完就把另外一個kill掉。

推測執(zhí)行需要設置Job的兩個參數(shù):

mapred.map.tasks.speculative.execution=true
mapred.reduce.tasks.speculative.execution=true

6、合理設置reduce個數(shù)

reduce個數(shù)

參數(shù)1:

hive.exec.reducers.bytes.per.reducer=256000000//每個reduce任務處理的數(shù)據(jù)量

參數(shù)2:

hive.exec.reducers.max=1009//每個任務最大的reduce數(shù)目

計算公式:reducer個數(shù)=min(參數(shù)2,總輸入數(shù)據(jù)量/參數(shù)1)

set mapred.reduce.tasks =N:

每個任務默認的reduce數(shù)目。典型為0.99* reduce槽數(shù),hive默認為-1,即自動確定reduce數(shù)目。

reduce個數(shù)并不是越多越好

同map一樣,啟動和初始化reduce也會消耗時間和資源;另外,有多少個reduce,就會有多少個輸出文件,如果生成了很多個小文件,那么如果這些小文件作為下一個任務的輸入,則也會出現(xiàn)小文件過多的問題。小文件過多會非常影響查詢效率,文件越多造成的IO就越多,同時還會增加元數(shù)據(jù)(namenode)的壓力。在生產(chǎn)環(huán)境中,一定要避免小文件問題,如果核查發(fā)現(xiàn),及時合并文件?。?/span>

7、開啟并行執(zhí)行

并行執(zhí)行,意思是同步執(zhí)行hive的多個階段,hive在執(zhí)行過程,將一個查詢轉化成一個或者多個階段。某個特定的job可能包含眾多的階段,而這些階段可能并非完全相互依賴的,也就是說可以并行執(zhí)行的,這樣可能使得整個job的執(zhí)行時間縮短

hive.exec.parallel.thread.number8//job并行執(zhí)行的數(shù)目,一個SQL語句可能有很多mapreduce任務,限制
hive.exec.parallelfalse

hive執(zhí)行開啟:

sethive.exec.parallel=true

8、優(yōu)化sql
  • where條件優(yōu)化

優(yōu)化前(關系數(shù)據(jù)庫不用考慮會自動優(yōu)化):

selectm.cid,u.idfromordermjoincustomeruon(m.cid=u.id)wherem.dt='20180808';

優(yōu)化后(where條件在map端執(zhí)行而不是在reduce端執(zhí)行):

selectm.cid,u.idfrom(select*fromorderwheredt='20180818')mjoincustomeruon(m.cid=u.id);
  • union優(yōu)化

盡量不要使用union (union 去掉重復的記錄)而是使用 union all 然后在用group by 去重

  • count distinct優(yōu)化

不要使用count (distinct cloumn) ,使用子查詢。

selectcount(1)from(selectidfromtablenamegroupbyid)tmp;
  • 用in 來代替join

如果需要根據(jù)一個表的字段來約束另為一個表,盡量用in來代替join 。

selectid,namefromtb1ajointb2bon(a.id=b.id);

selectid,namefromtb1whereidin(selectidfromtb2);

in 要比join 快

  • 消滅子查詢內(nèi)的 group by 、 COUNT(DISTINCT),MAX,MIN??梢詼p少job的數(shù)量。

  • join 優(yōu)化:

Common/shuffle/Reduce JOIN:連接發(fā)生的階段,發(fā)生在reduce 階段,適用于大表連接大表(默認的方式)

Map join :連接發(fā)生在map階段,適用于小表連接大表大表的數(shù)據(jù)從文件中讀??;小表的數(shù)據(jù)存放在內(nèi)存中(hive中已經(jīng)自動進行了優(yōu)化,自動判斷小表,然后進行緩存)。

sethive.auto.convert.join=true;

SMB join:Sort -Merge -Bucket Join 對大表連接大表的優(yōu)化,用桶表的概念來進行優(yōu)化。在一個桶內(nèi)發(fā)送生笛卡爾積連接(需要是兩個桶表進行join)

sethive.auto.convert.sortmerge.join=true;
sethive.optimize.bucketmapjoin=true;
sethive.optimize.bucketmapjoin.sortedmerge=true;
sethive.auto.convert.sortmerge.join.noconditionaltask=true;

責任編輯:haq


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)

    關注

    8

    文章

    7314

    瀏覽量

    93919
  • hive
    +關注

    關注

    0

    文章

    12

    瀏覽量

    4091

原文標題:Hive 提高查詢效率的八條軍規(guī)

文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    信維低損耗MLCC電容,提升電路效率優(yōu)選

    信維低損耗MLCC電容在提升電路效率方面表現(xiàn)優(yōu)異,其核心優(yōu)勢體現(xiàn)在 低損耗特性、高頻響應能力、小型化設計、高可靠性 以及 廣泛的應用適配性 ,具體分析如下: 一、低損耗特性直接提升電路效率
    的頭像 發(fā)表于 11-24 16:30 ?382次閱讀

    斑馬技術助力PouchNATION提升大型活動管理效率

    斑馬技術公司宣布 PouchNATION 通過采用斑馬技術的高性能掃描解決方案,顯著提升其大型活動的管理效率。
    的頭像 發(fā)表于 11-04 16:15 ?379次閱讀

    三坐標如何實現(xiàn)測量效率提升

    精密制造的產(chǎn)線節(jié)奏日益加快,傳統(tǒng)三坐標測量機面臨著“要么放慢速度保精度,要么犧牲精度換速度”的困境制約著生產(chǎn)效率提升。MizarGold三坐標測量機通過材料創(chuàng)新與傳動優(yōu)化,實現(xiàn)了測量速度快的同時不
    的頭像 發(fā)表于 09-11 16:47 ?1269次閱讀
    三坐標如何實現(xiàn)測量<b class='flag-5'>效率</b>的<b class='flag-5'>提升</b>?

    同步整流MOSFET的設計要點與效率提升技巧

    。其核心器件——MOSFET,在設計中扮演著至關重要的角色。本文將深入探討同步整流MOSFET的選型要點和提升效率的設計技巧。一、同步整流的基本原理傳統(tǒng)整流使用二極
    的頭像 發(fā)表于 07-03 09:42 ?591次閱讀
    同步整流MOSFET的設計要點與<b class='flag-5'>效率</b><b class='flag-5'>提升</b>技巧

    全球各大品牌利用NVIDIA AI技術提升運營效率

    歐萊雅、LVMH 集團和雀巢利用 NVIDIA 加速的智能體 AI 和物理 AI,大幅提升產(chǎn)品設計、營銷及物流等方面的運營效率。
    的頭像 發(fā)表于 06-19 14:36 ?952次閱讀

    DevEco Studio AI輔助開發(fā)工具兩大升級功能 鴻蒙應用開發(fā)效率提升

    隨著搭載HarmonyOS 5的Pura X發(fā)布,鴻蒙生態(tài)進入快車道,各應用正在加速適配開發(fā),越來越多開發(fā)者加入到鴻蒙應用開發(fā)浪潮中。為提升鴻蒙應用開發(fā)效率,華為前不久上線了首款開發(fā)
    發(fā)表于 04-18 14:43

    分布式存儲數(shù)據(jù)恢復—虛擬機上hbase和hive數(shù)據(jù)庫數(shù)據(jù)恢復案例

    分布式存儲數(shù)據(jù)恢復環(huán)境: 16臺某品牌R730xd服務器節(jié)點,每臺服務器節(jié)點上有數(shù)臺虛擬機。 虛擬機上部署Hbase和Hive數(shù)據(jù)庫。 分布式存儲故障: 數(shù)據(jù)庫底層文件被誤刪除,數(shù)據(jù)庫不能使用。要求恢復hbase和hive數(shù)據(jù)庫。
    的頭像 發(fā)表于 04-17 11:05 ?503次閱讀

    新能源時代,圓柱電池生產(chǎn)設備如何提升生產(chǎn)效率?

    優(yōu)化生產(chǎn)流程是提升圓柱電池生產(chǎn)效率的基礎。首先,需要對現(xiàn)有生產(chǎn)流程進行多方位梳理,找出瓶頸環(huán)節(jié),并進行針對性改進。例如,通過精簡生產(chǎn)環(huán)節(jié),減少不必要的物料搬運和等待時間,可以有效提升生產(chǎn)效率
    的頭像 發(fā)表于 04-08 11:51 ?539次閱讀

    優(yōu)化汽車點焊生產(chǎn)線,提升制造效率與質量

    在當前的制造業(yè)環(huán)境中,提高生產(chǎn)效率和產(chǎn)品質量是企業(yè)追求的核心目標之一。汽車點焊作為汽車制造過程中的關鍵環(huán)節(jié),其效率和質量直接影響到整車的性能和安全。因此,優(yōu)化汽車點焊生產(chǎn)線,不僅能夠顯著提升生產(chǎn)
    的頭像 發(fā)表于 02-23 11:14 ?758次閱讀

    IP地址查詢技術

    基于WHOIS協(xié)議和DNS反向解析,響應時間長達數(shù)百毫秒。而現(xiàn)代的IP查詢技術可將反應速度提升至毫秒級。 IP定位技術核心原理 1.多維度數(shù)據(jù)融合 現(xiàn)代IP定位系統(tǒng)采用混合數(shù)據(jù)源架構: l 網(wǎng)絡運營商分配的IP段數(shù)據(jù) l 全球路由注冊機構的注冊信息 l 用戶設備主動上報的
    的頭像 發(fā)表于 02-12 11:13 ?719次閱讀
    IP地址<b class='flag-5'>查詢</b>技術

    回饋式交流電子負載:測試效率與節(jié)能效果的雙重提升

    ,通過創(chuàng)新的能量回饋機制,實現(xiàn)了測試效率與節(jié)能效果的雙重提升,為電力電子測試領域帶來了革命性變革。 一、傳統(tǒng)測試方法的局限性 傳統(tǒng)電阻負載測試方法采用耗能式工作原理,將電能轉化為熱能消耗。這種測試方式
    發(fā)表于 02-07 11:13

    八個方面提升LED驅動電源效率

    關于提升LED驅動電源效率的技巧總結: 1.主電流回路PCB盡量短。LAYPCB的經(jīng)驗,及布局,這個沒什么,快速的方法就是多看別人的作品。 2.優(yōu)化變壓器參數(shù)設計,減少振鈴帶來的渦流損耗。這個比較
    發(fā)表于 01-17 10:07

    怎么提升單片機代碼執(zhí)行效率

    ? 提升單片機代碼執(zhí)行效率需要從多個方面入手,包括代碼優(yōu)化、硬件資源利用、編譯器設置、中斷處理優(yōu)化以及其他技巧等。在實際應用中,需要根據(jù)具體需求和硬件條件綜合考慮這些因素,以實現(xiàn)最佳的性能表現(xiàn)。 ?
    的頭像 發(fā)表于 01-10 11:06 ?927次閱讀

    Triton編譯器如何提升編程效率

    在現(xiàn)代軟件開發(fā)中,編譯器扮演著至關重要的角色。它們不僅將高級語言代碼轉換為機器可執(zhí)行的代碼,還通過各種優(yōu)化技術提升程序的性能。Triton 編譯器作為一種先進的編譯器,通過多種方式提升編程效率,使得
    的頭像 發(fā)表于 12-25 09:12 ?1172次閱讀

    如何使SOLIDWORKS參數(shù)化設計軟件提升效率

    SOLIDWORKS參數(shù)化設計軟件-SolidKits.AutoWorks可實現(xiàn)智能選型、自動化修改產(chǎn)品屬性、產(chǎn)品參數(shù)、產(chǎn)品狀態(tài)、圖紙更新、重命名、并自動打包生成交付物,實現(xiàn)產(chǎn)品自動設計。大幅提升設計效率,減少錯誤、降低對人工經(jīng)驗的要求和用人成本。
    的頭像 發(fā)表于 12-19 15:53 ?1298次閱讀