日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

完善資料讓更多小伙伴認識你,還能領(lǐ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ù)、排序等功能的語句,當(dāng)開啟一個Fetch Task功能,就執(zhí)行一個簡單的查詢語句不會生成MapRreduce作業(yè),而是直接使用FetchTask,從hdfs文件系統(tǒng)中進行查詢輸出數(shù)據(jù),從而提高效率。

設(shè)置的方式:

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)




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

2、合并中間表

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

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

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

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

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

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

4、jvm重用

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

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

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

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

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

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

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

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

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

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

reduce個數(shù)

參數(shù)1:

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

參數(shù)2:

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

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

set mapred.reduce.tasks =N:

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

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

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

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

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

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

hive執(zhí)行開啟:

sethive.exec.parallel=true

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

優(yōu)化前(關(guān)系數(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 去掉重復(fù)的記錄)而是使用 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;

責(zé)任編輯:haq


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

    關(guān)注

    8

    文章

    7349

    瀏覽量

    95055
  • hive
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    4151

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    MySQL慢查詢調(diào)優(yōu)指南

    MySQL慢查詢是數(shù)據(jù)庫性能問題的最常見原因。當(dāng)一條SQL語句執(zhí)行超過1秒時,就可能影響用戶體驗;超過10秒時,通常會收到用戶投訴;而超過30秒的查詢,往往意味著系統(tǒng)存在嚴重的性能問題。本文從實
    的頭像 發(fā)表于 04-09 10:01 ?202次閱讀

    京東訂單API:批量訂單處理,效率倍增!

    ,特別是其 批量處理能力 ,為我們提供了一種強大的解決方案,能夠顯著提升訂單管理效率。 一、 單條處理 vs. 批量處理:效率差異顯著 想象一下,你的系統(tǒng)需要查詢1000個訂單的狀態(tài)
    的頭像 發(fā)表于 01-26 14:14 ?422次閱讀
    京東訂單API:批量訂單處理,<b class='flag-5'>效率</b>倍增!

    AGV機器人如何提升搬運效率?

    AGV智能搬運車正顛覆傳統(tǒng)物流模式,24小時精準作業(yè)、多車協(xié)同、自主避障,將搬運效率提升300%以上,成為智能制造的核心引擎。
    的頭像 發(fā)表于 01-15 16:48 ?433次閱讀
    AGV機器人如何<b class='flag-5'>提升</b>搬運<b class='flag-5'>效率</b>?

    公網(wǎng)訪問開源 Stirling-PDF 工具,提升辦公效率

    本文介紹了如何在Windows本地部署Stirling-PDF服務(wù)器,并通過內(nèi)網(wǎng)穿透實現(xiàn)外網(wǎng)訪問,提升PDF處理效率。
    的頭像 發(fā)表于 12-09 14:25 ?709次閱讀
    公網(wǎng)訪問開源 Stirling-PDF 工具,<b class='flag-5'>提升</b>辦公<b class='flag-5'>效率</b>

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

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

    AI技術(shù)賦能質(zhì)檢,提升效率和精準的雙提升

    迅速成為推動產(chǎn)業(yè)質(zhì)量升級的重要引擎。它不僅改變了企業(yè)“靠人眼識別缺陷”的傳統(tǒng)模式,更推動了生產(chǎn)過程的數(shù)字化、標(biāo)準化和智能化。 ?一、AI質(zhì)檢的核心優(yōu)勢 ?高效識別缺陷,提升檢測效率 ?AI質(zhì)檢系統(tǒng)依托高精度攝像頭、傳感器
    的頭像 發(fā)表于 11-12 15:49 ?760次閱讀

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

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

    汽車配件:使用VIN碼查詢API精準匹配車型配件,提升用戶信任

    ? ?引言 在汽車配件銷售中,用戶最擔(dān)憂的問題是 配件不匹配 ——既浪費金錢又損害信任。傳統(tǒng)依賴車型名稱或年份的查詢方式,錯誤率高達$15%-20%$。而VIN碼(Vehicle
    的頭像 發(fā)表于 09-28 15:18 ?887次閱讀
    汽車配件:使用VIN碼<b class='flag-5'>查詢</b>API精準匹配車型配件,<b class='flag-5'>提升</b>用戶信任

    淘寶/天貓:使用物流查詢API實時顯示包裹位置,減少客服咨詢量

    ,有效降低客服咨詢量。 一、傳統(tǒng)物流查詢的痛點 信息不對稱 買家需主動聯(lián)系客服獲取物流狀態(tài),造成時間延遲 客服資源浪費 簡單查詢占用專業(yè)客服,處理效率低于*$20%$* 體驗斷層 用戶離開商品頁就無法跟蹤包裹,增加焦慮感 二、物
    的頭像 發(fā)表于 09-22 14:34 ?672次閱讀
    淘寶/天貓:使用物流<b class='flag-5'>查詢</b>API實時顯示包裹位置,減少客服咨詢量

    常用PromQL查詢案例總結(jié)

    在云原生時代,Prometheus已經(jīng)成為監(jiān)控領(lǐng)域的事實標(biāo)準。作為一名資深運維工程師,我見過太多團隊在PromQL查詢上踩坑,也見過太多因為監(jiān)控不到位導(dǎo)致的生產(chǎn)事故。今天分享10個實戰(zhàn)中最常用的PromQL查詢案例,每一個都是血淚經(jīng)驗的總結(jié)。
    的頭像 發(fā)表于 09-18 14:54 ?884次閱讀

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

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

    如何評估通信協(xié)議優(yōu)化對數(shù)據(jù)傳輸效率提升效果?

    評估通信協(xié)議優(yōu)化對數(shù)據(jù)傳輸效率提升效果,核心邏輯是 “控制變量 + 多維度量化對比”—— 即通過定義明確的評估目標(biāo)、構(gòu)建一致的測試環(huán)境、選取關(guān)鍵效率指標(biāo),對比優(yōu)化前后的協(xié)議表現(xiàn),最終驗證優(yōu)化是否達到預(yù)期(如降低延遲、
    的頭像 發(fā)表于 08-29 17:52 ?1471次閱讀

    電驅(qū)動系統(tǒng)EMC測試整改:AI仿真技術(shù)如何提升效率

    深圳南柯電子|電驅(qū)動系統(tǒng)EMC測試整改:AI仿真技術(shù)如何提升效率
    的頭像 發(fā)表于 08-25 11:01 ?1009次閱讀

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

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

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

    歐萊雅、LVMH 集團和雀巢利用 NVIDIA 加速的智能體 AI 和物理 AI,大幅提升產(chǎn)品設(shè)計、營銷及物流等方面的運營效率。
    的頭像 發(fā)表于 06-19 14:36 ?1377次閱讀
    九龙县| 类乌齐县| 鹰潭市| 揭阳市| 湘潭市| 叙永县| 延边| 邢台市| 吕梁市| 通榆县| 麻城市| 峡江县| 松阳县| 麦盖提县| 林州市| 静乐县| 临桂县| 荆州市| 四平市| 兴宁市| 河源市| 湖南省| 明星| 盐城市| 九江市| 甘孜县| 全南县| 克山县| 安西县| 昆明市| 静乐县| 大姚县| 华坪县| 毕节市| 类乌齐县| 霍林郭勒市| 华蓥市| 汶川县| 江油市| 唐海县| 新巴尔虎右旗|