Hive中優化問題

一、小文件合并優化

Hive中的小文件分為Map端的小文件和Reduce端的小文件。

(1)、Map端的小文件優化是通過CombineHiveInputFormat操作。相關的參數是:

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

(2)、Reduce端的小文件合并

Map端的小文件合并是為了將小文件合并成一個切片,然后使用一個MR任務來執行這個切片。而Reduce端的小文件合并是為了將多個小文件合并成為一個大文件。

其原理是根據計算任務輸出的文件的平均大小進行判斷,若符合條件,就會單獨的啟動一個額外的任務進行合并。

相關的參數:

--------------開啟合并map only任務輸出的小文件-----------

set hive.merge.mapfiles=true;

--------------開啟合并map reduce任務輸出的小文件-----------

set hive.merge.mapredfiles=true;

------觸發小文件合并的閾值,若某個計算任務輸出的文件平均大小低于該閾值,就會觸發合并-----

set hive.merge.smallfiles.avgsize=16000000;

------合并后的文件大小------------

set hive.merge.size.per.task=256000000;

二、CBO優化

CBO全稱就是Cost based Optimizer,即基于計算成本的優化。在Hive中,計算成本受到數據的行數、CPU個數、本地IO、HDFS IO、網絡IO等方面的影響,Hive會計算同一個SQL語句各個執行計劃的計算成本,然后選擇出計算成本最低的執行計劃來執行。目前CBO在Hive的MR引擎下主要用于join的優化。例如多表join時的join順序。

相關參數為:

--------是否啟用cbo優化--------

set hive.cbo.enable=true;

三、謂詞下推優化

謂詞下推是指盡量的將過濾操作前移,以減少后續計算步驟中的數據量。

相關的參數是:

---------是否開啟謂詞下推優化--------------

set hive.optimize.ppd=true;

其實,在CBO優化中也會完成一部分的謂詞下推操作,因為經過謂詞下推以后的執行計劃的計算成本往往會更低一些。

四、矢量化計算優化

Hive的矢量化計算依賴于CPU的矢量計算操作。他可以使原有的標量計算轉化為矢量化計算,提高查詢和計算的效率。

在標量計算中,每一條加法計算就會產生一條指令,但是如果這一批計算都是加法計算,就可以先對這批數據矢量化,然后對矢量化后的數據用一次加法指令就可以了,這樣就可以提高計算的效率。實現方式如圖:

相關的參數設置為:

set hive.vectorized.execution.enable=true;

五、Fetch抓取優化

Fetch抓取優化的出現是因為有些情況下的查詢其實不用走MapReduce,只需要簡單的讀取一下文件,將其中的結果讀取出來就可以了。例如select * from emp;

默認情況下是開啟這個參數的。相關參數是:

set hive.fetch.task.conversion=more;默認值就是more。none表示不開啟,還有一個參數是minimal,但是用的很少,要是開啟就直接用more就行了。

六、本地模式優化

當Hive的數據輸入量較小的時候,觸發任務執行的時間可能都比實際任務執行的時間長,這時就可以設置本地模式,在本地執行任務就可以了。對于小數據集來說,執行時間可以被明顯的縮短。

七、并行執行優化

并行執行就是說一條SQL語句其實是分為了多個Stage來執行的,多個Stage之間可能有依賴關系,也可能會沒有依賴關系,對于沒有依賴關系的Stage,我們可以讓他們并行的執行,這就是并行執行的優化目的。因為在默認情況下,不論Stage之間有沒有依賴關系,他都只會一個個的執行Stage。

相關參數設置:

---啟用并行執行優化
set hive.exec.parallel=true;

---同一個SQL語句的最大執行并行度,默認為8

set hive.exec.parallel.thread.number=8;

八、嚴格模式

Hive會嚴格的禁止一些危險的操作,這些危險的操作有:

(1)、分區表不使用分區字段過濾。不使用分區字段就代表著要操作的數據范圍是整個表,這對于分區表的操作是十分危險的,因為整張表的數據量非常的巨大,對整張表的操作可能會占用巨大的資源。

(2)、使用order by沒有使用limit過濾。order by也是一樣,他會是對全表的數據進行排序,這也是十分危險的情況,一般在學習階段因為數據量少不會注意這個要加上limit,但是在實際的生產環境下,數據量就是十分龐大,必須要加上limit才能夠被允許執行。

(3)、笛卡爾積。也是十分消耗資源的一種操作。例如A表有1萬條數據,B表有100條數據,進行笛卡爾積之后就會有100萬條數據,造成了數據嚴重膨脹,所以一般情況下也要嚴格禁止這種操作的執行。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92877.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92877.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92877.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

tlias智能學習輔助系統--Maven高級-繼承

目錄 一、打包方式與應用場景 二、父子工程繼承關系 1. 父工程配置 2. 子工程配置 三、自定義屬性與引用屬性 1. 定義屬性 2. 在 dependencyManagement 中引用 3. 子工程中引用 四、dependencyManagement 與 dependencies 的區別 五、項目結構示例 六、小結 在實際開…

把 AI 押進“小黑屋”——基于 LLM 的隱私對話沙盒設計與落地

標簽:隱私計算、可信執行環境、LLM、沙盒、內存加密、TEE、SGX、Gramine ---- 1. 背景:甲方爸爸一句話,“數據不能出機房” 我們給某三甲醫院做智能問診助手,模型 70 B、知識庫 300 GB。 甲方只給了兩條鐵律: 1. 患者…

Java 大視界 -- Java 大數據在智能教育學習效果評估指標體系構建與精準評估中的應用(394)

Java 大視界 -- Java 大數據在智能教育學習效果評估指標體系構建與精準評估中的應用(394)引言:正文:一、傳統學習評估的 “數字陷阱”:看不全、說不清、跟不上1.1 評估維度的 “單行道”1.1.1 分數掩蓋的 “學習真相”…

Dubbo 3.x源碼(33)—Dubbo Consumer接收服務調用響應

基于Dubbo 3.1,詳細介紹了Dubbo Consumer接收服務調用響應 此前我們學習了Dubbo Provider處理服務調用請求的流程,現在我們來學習Dubbo Consumer接收服務調用響應流程。 實際上接收請求和接收響應同屬于接收消息,它們的流程的很多步驟是一樣…

棧和隊列:數據結構中的基礎與應用?

棧和隊列:數據結構中的基礎與應用在計算機科學的領域中,數據結構猶如大廈的基石,支撐著各類復雜軟件系統的構建。而棧和隊列作為兩種基礎且重要的數據結構,以其獨特的特性和廣泛的應用,在程序設計的舞臺上扮演著不可或…

服務端配置 CORS解決跨域問題的原理

服務端配置 CORS(跨域資源共享)的原理本質是 瀏覽器與服務器之間的安全協商機制。其核心在于服務器通過特定的 HTTP 響應頭聲明允許哪些外部源(Origin)訪問資源,瀏覽器根據這些響應頭決定是否放行跨域請求。以下是詳細…

Unity筆記(五)知識補充——場景切換、退出游戲、鼠標隱藏鎖定、隨機數、委托

寫在前面:寫本系列(自用)的目的是回顧已經學過的知識、記錄新學習的知識或是記錄心得理解,方便自己以后快速復習,減少遺忘。主要是C#代碼部分。十七、場景切換和退出游戲1、場景切換場景切換使用方法: SceneManager.LoadScene()&a…

用 Spring 思維快速上手 DDD——以 Kratos 為例的分層解讀

用 Spring 思維理解 DDD —— 以 Kratos 為參照 ? 在此前的學習工作中,使用的開發框架一直都是 SpringBoot,對 MVC 架構幾乎是肌肉記憶:Controller 接請求,Service 寫業務邏輯,Mapper 操作數據庫,這套套路…

docspace|Linux|使用docker完全離線化部署onlyoffice之docspace文檔協作系統(全網首發)

一、 前言 書接上回,Linux|實用工具|onlyoffice workspace使用docker快速部署(離線和定制化部署)-CSDN博客,如果是小公司或者比如某個項目組內部使用,那么,使用docspace這個文檔協同系統是非常合適的&…

【教程】如何高效提取胡蘿卜塊根形態和顏色特征?

胡蘿卜是全球不可或缺的健康食材和重要的經濟作物, 從田間到餐桌,從鮮食到深加工,胡蘿卜在現代人的飲食和健康中扮演著極其重要的角色,通過量化塊根形態和色澤均勻性,可實現對高產優質胡蘿卜品種的快速篩選。工具/材料…

Python初學者筆記第二十四期 -- (面向對象編程)

第33節課 面向對象編程 1. 面向對象編程基礎 1.1 什么是面向對象編程面向過程:執行者 耗時 費力 結果也不一定完美 面向對象:指揮者 省時 省力 結果比較完美面向對象編程(Object-Oriented Programming, OOP)是一種編程范式,它使用"對象&…

Go 語言 里 `var`、`make`、`new`、`:=` 的區別

把 Go 語言 里 var、make、new、: 的區別徹底梳理一下。1?? var 作用:聲明變量(可以帶初始值,也可以不帶)。語法: var a int // 聲明整型變量,默認值為 0 var b string // 默認值 ""…

計算機網絡---IP(互聯網協議)

一、IP協議概述 互聯網協議(Internet Protocol,IP)是TCP/IP協議族的核心成員,位于OSI模型的網絡層(第三層),負責將數據包從源主機傳輸到目標主機。它是一種無連接、不可靠的協議,提供…

DataFun聯合開源AllData社區和開源Gravitino社區將在8月9日相聚數據治理峰會論壇

🔥🔥 AllData大數據產品是可定義數據中臺,以數據平臺為底座,以數據中臺為橋梁,以機器學習平臺為中層框架,以大模型應用為上游產品,提供全鏈路數字化解決方案。 ?杭州奧零數據科技官網&#xff…

【工具】通用文檔轉換器 推薦 Markdown 轉為 Word 或者 Pdf格式 可以批量或者通過代碼調用

【工具】通用文檔轉換器 推薦 可以批量或者通過代碼調用 通用文檔轉換器 https://github.com/jgm/pandoc/ Pandoc - index 下載地址 https://github.com/jgm/pandoc/releases 使用方法: 比如 Markdown 轉為 Word 或者 Pdf格式 pandoc -s MANUAL.txt -o example29.docx …

【UEFI系列】Super IO

文章目錄一、什么是Super IO二、Super IO的作用常見廠商三、邏輯設備控制如何訪問SIO邏輯設備的配置寄存器具體配置數值四、硬件監控(hardware monitor)一、什么是Super IO Super Input/Output超級輸入輸出控制器。 通過LPC(low pin count&a…

飛算 JavaAI 2.0.0 測評:自然語言編程如何顛覆傳統開發?

一、前言 在AI技術高速發展的今天,編程方式正在經歷一場革命。傳統的“手寫代碼”模式逐漸被AI輔助開發取代,而飛算JavaAI 2.0.0的推出,更是讓自然語言編程成為現實。 作為一名長期使用Java開發的程序員,我決定深度體驗飛算Java…

Dubbo + zk 微服務

一、安裝zk注冊中心 win版本:windows環境下安裝zookeeper教程詳解(單機版)-CSDN博客 linux版本: 二、服務提供方搭建 引入dubbo和zk依賴 提供接口 使用注解方式實現接口級注冊到zk,而springcloud是將服務注冊到注冊…

聆思duomotai_ap sdk適配dooiRobot

一、說明 1、duomotai_ap介紹 duomotai_ap是一個針對多模態開發板(如 CSK6-MIX 開發板)的大模型 AI 開發套件 SDK,主要用于開發語音、視覺等多模態 AI 應用。 2、dooiRobot介紹 基于Doly 機器人的經典外觀設計,采用聆思CSK6011A…

Photoshop軟件打開WebP文件格的操作教程

Photoshop軟件打開WebP文件格的操作教程,好吧,這是英文原版: Photoshop 23.2 原生支持 WebP 格式,無需插件即可打開、編輯和保存 WebP 文件。用戶可通過“文件 > 另存為副本”選擇 WebP 格式,調整無損/有損壓縮及質…