【數據開發】Hive 多表join中的條件過濾與指定分區

1、條件過濾

left join 中 on 后面加條件 where 和 and 的區別

  • 1、 on條件是在生成臨時表時使用的條件,它不管and中的條件是否為真,都會保留左邊表中的全部記錄。
  • 2、where條件是在臨時表生成好后,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左表的記錄)了,條件不為真的就全部過濾掉。

條件加在where可能會導致主表/左表的最終記錄數變少的情況發生。

舉個例子:
有表a和表b

表a:

idname
1a
2b
3c
4d

表b:

idname
1A
2B

1、on 后面條件用and ,不管條件是否成立 都會把左表的數據全部展示

select * from a left join b on a.id = b.id  and b.name = 'B';

此時會有4條記錄

idnameid2name2
1a
2b2B
3c
4d

2、on 后面條件用where ,在left join 生成的表上在做篩選,這時會把 where中不成立的篩選掉

select * from a left join b on a.id = b.id  where b.`name` = 'B';

此時只有1條記錄

idnameid2name2
2b2B

2、指定分區

結論:指定分區時優先采用寫法3,即 partition 的寫法。

1、left join xxx::xxx on 分區字段 = 其他表的分區字段
where 其他表的分區字段 = 2023110700
2、left join xxx::xxx on 分區字段 =2023110700
3、left join xxx::xxx partition(p_2023110700)t
4、left join (select xxx from xxx::xxx where 分區字段 =2023110700) on xxx
5、left join (select xxx from xxx::xxx partition(p_2023110700)t ) on xxx

寫法1 是最慢的,因為join兩邊的表都沒有提前過濾分區,所以執行時大概率導致全表掃描。
寫法2,3 一般情況下差異不大,寫法3是最規范的寫法。 寫法3必定是指定分區,寫法2大概率會優化為指定分區,小概率全表掃描。
寫法4,5是Hive的標準寫法,但是一般場景下沒有子查詢的必要,效果上與寫法2,3相同。

3、數據傾斜

1、優化大小表join,采用map join的方式優化

使用map join的必要條件:
a. 參與連接的小表的行數,以不超過2萬條為宜。
b.連接類型是inner join、right outer join(小表不能是右表)、left outer join(小表不能是左表)、left semi join。

使用方法示例:

     INSERT OVERWRITE TABLE xxxSELECT /*+ MAPJOIN(aa) */   aa.pageid, u.age                                 FROM page_view pvJOIN user uON (aa.userid = u.userid);注:當大表存在數據傾斜時,如果小表符合map join的要求,使用map join會極大加速計算。
/*+ MAPJOIN(pv) */   

參考資料

2、避免大小表join
再單獨清洗一張dwd,設定保留分區的個數,構造一張特定大小的總表,進行全表掃描再過濾字段。

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

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

相關文章

Gemini:新一代AI產品的驚人功能和革命性影響

目錄 1 前言2 視頻分析與交互能力3 策劃推理能力4 教育領域的應用能力5 科學領域的論文解讀能力6 結語 1 前言 Google最新推出的AI產品Gemini引發了廣泛關注,其30分鐘的介紹和演示視頻展示了令人驚艷的功能。Gemini以其驚人的藝術創作能力脫穎而出,通過…

TCP一對一聊天

客戶端 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io…

python-04(入門基礎篇4——lists相關的部分語法)

python-04(入門基礎篇4——lists相關的部分語法) 1. 前言1.1 python入門1.2 參考官網 2. 關于索引和切片3. 在列表追加元素3.1 支持拼接3.2 使用list.append() 方法在列表末尾添加新項 4. 列表是可變類型4.1 更改其中某元素內容4.2 使用切片更改列表大小…

cesium學習記錄

有段時間自學了cesium,這里記錄一下自學過程,希望在所需之時查閱~~ 1、cesium源碼獲取與Index頁面介紹 官網網址 www.cesiumjs.org 源代碼下載:Platform-Dowmloads 在index.html右擊open with Live server開啟本地服務 點擊Documentation…

mysql 表分區類型

在MySQL中,有幾種不同類型的分區可以用于對表進行分區。以下是MySQL中常用的分區類型: 1. RANGE分區:基于給定的列范圍進行分區。例如,可以按照日期范圍或數值范圍對表進行分區。 CREATE TABLE sales (id INT NOT NULL AUTO_INC…

VMware安裝OpenEuler(安裝界面)

本文中使用的OpenEuler版本:22.03 LTS SP2 VMware:17.0.0 一、下載鏡像 根據CPU和場景,按需下載 https://www.openeuler.org/zh/download/?versionopenEuler%2022.03%20LTS%20SP2 二、初始化VmWare 三、配置操作系統 四、安裝操作系統 …

Nginx漏洞修復

1、漏洞 去掉在請求響應頭中存在的信息 Server: nginx X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1;modeblock 修復方法 在Nginx的配置文件中的 server 標簽內增加一下配置 server_tokens off; add_header X-Frame-Options SAMEORIGIN; …

Python繪制幾種常見的時序分析圖

時間序列數據是一種按照時間順序排列的觀測值集合,每個觀測值對應于一個特定的時間點。這種數據在許多領域中都具有重要的應用價值,如金融、經濟、氣候科學等。通過分析時間序列數據,可以幫助我們掌握潛在的模式、發現趨勢和季節性波動等重要…

【力扣】160.相交鏈表

160.相交鏈表 這個題目因為我之前在學指針的時候沒學好,所以總感覺有一種畏難,我害怕。但是當真正的開始學習之后,發現現在的腦袋還是能用的,所以不要放棄,你可以的! 題解: 總的來說還是挺簡…

CSGO游戲盲盒開箱源碼 盲盒對戰、幸運開箱、積分商城、Fl盲盒

源碼介紹: CSGO游戲盲盒開箱源碼 盲盒對戰、幸運開箱、積分商城、Fl盲盒。這個是一個新花樣玩法的盲盒程序。 僅供學習,請勿商用!請購買正版程序運營。 代碼下載:百度網盤

2、Linux_遠程操作

遠程操作 1.配置ifconfig 1.1輸入 ifconfig 查看 ip 的命令( ifconfig ) 1.2搜索 ifconfig 命令(yum search ifconfig) 1.3配置網卡 進入如下目錄配置網卡 cd /etc/syscofig/network-scripts編輯 ifcfg-ens33 vi ifcfg-ens33按 i 鍵進入編輯模式 按 …

Java第二十一章

一.網絡程序設計基礎 1.網絡協議 網絡協議規定了計算機之間連接的物理、機械(網線與網卡的連接規定)、電氣(有效的電平范圍)等特征,計算機之間的相互尋址規則,數據發送沖突的解決方式,長數據如何分段傳送與接收等內容.就像不同的國家有不同的…

邏輯漏洞與越權

邏輯漏洞與越權 越權 如果使用A用戶的權限去操作B用戶的數據,A的權限小于B的權限,如果能夠成功操作,則稱之為越權操作。 越權漏洞形成的原因是后臺使用了 不合理的權限校驗規則導致的。 一般越權漏洞容易出現在權限頁面(需要登…

掌握VUE中localStorage的使用

文章目錄 🍁localStorage的使用🌿設置數據🌿獲取數據🌿更新數據🌿刪除數據 🍁代碼示例🍁使用場景🍁總結 localStorage是一種Web瀏覽器提供的本地存儲機制,允許開發者在用…

java中ReentrantLock的實現原理是什么?

ReentrantLock 的實現原理主要涉及到兩個關鍵概念:同步器(Sync)和 AQS(AbstractQueuedSynchronizer,抽象隊列同步器)。 ReentrantLock 使用 AQS 來實現可重入鎖的機制。AQS 是 Java 并發包中的一個抽象基類…

周星馳 互聯網3.0 團隊下個月將上線獨立 App

2023年12月7日,新浪科技報道指出,周星馳旗下的互聯網3.0團隊透露,Moonbox,這家周星馳創立的互聯網3.0初創公司,計劃在明年1月份完成Moonbox App的上線,屆時該應用將免費向用戶提供服務。 目前,…

C現代方法(第25章)筆記——國際化特性

文章目錄 第25章 國際化特性25.1 <locale.h>: 本地化25.1.1 類項25.1.2 setlocale函數25.1.3 localeconv函數 25.2 多字節字符和寬字符25.2.1 多字節字符25.2.2 寬字符25.2.3 Unicode和通用字符集25.2.4 Unicode編碼25.2.5 多字節/寬字符轉換函數25.2.6 多字節/寬字符串轉…

Academic accumulation|行政管理方向的文章

一、評西方的“新公共管理”范式 文獻來源&#xff1a;[1]陳振明.評西方的“新公共管理”范式[J].中國社會科學,2000(06):73-82207. 下載鏈接&#xff1a;https://pan.baidu.com/s/1M1jDT-5tsJ0ES46j4pb7Cg 提取碼&#xff1a;mj54 在當代西方政府改革浪潮的沖擊下 ,世紀之交的…

zotero關閉翻譯自動創建標簽

zotero中文社區&#xff1a;https://plugins.zotero-chinese.com/#/

代碼遷移到gltlab倉庫,包含全部分支和提交記錄

老倉庫所有分支都完整拉取 git clone --mirror 原倉庫地址文件名&#xff1a;xxx.git 進入下載的目錄&#xff0c;設置新的倉庫地址 git remote set-url origin 新倉庫地址推送到新倉庫 git push -f origin --mirror問題一&#xff1a;remote: GitLab: The default branch …