偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

數據開發(fā)中,這些讓你頭疼過嗎?

大數據
數據傾斜最籠統(tǒng)概念就是數據的分布不平衡,有些地方數據多,有些地方數據少。

[[425544]]

數據發(fā)散

什么是數據發(fā)散

在join的過程中,關聯鍵出現一對多,或者多對多時候,造出結果存在重復。

數據發(fā)散癥狀

癥狀

(1)結果存在重復。

(2)數據量劇增。

(3)可能導致無法使用正常資源處理完成。

排查

(1)出現這種原因就是

A left join B 的時候,使用主鍵的關聯條件中,沒有關聯到表B的最小粒度。

(2)查找是否是這種原因

select 關聯字段 from table group by 關聯字段 having count(關聯字段)>1 就可以判定是否有關聯字段出現不唯一的發(fā)散情況。

避免或解決

(1)如果右表關聯字段有重復值則要去重,否則數據會發(fā)散。

(2)仔細寫好SQL,是否存在業(yè)務邏輯的錯誤(關聯字段用錯)。

笛卡兒積

什么是笛卡兒積

笛卡爾積在SQL中的實現方式既是交叉連接(Cross Join)。所有連接方式都會先生成臨時笛卡爾積表,笛卡爾積是關系代數里的一個概念,表示兩個表中的每一行數據任意組合 。

笛卡兒積案例

A表

id name city
1 aa 1001
2 bb 1002
3 cc 1003

B表

id city_name
1 a城
2 b城
3 c城

SQL

  1. SELECT * FROM A,B; 

結果

id name city id city_name
1 aa 1001 1 a城
1 aa 1001 2 bb
1 aa 1001 3 c城
2 bb 1002 1 a城
2 bb 1002 2 bb
2 bb 1002 3 c城
3 cc 1003 1 a城
3 cc 1003 2 bb
3 cc 1003 3 c城

產生原因

(1)當連接沒有on條件是,會出現笛卡爾積(全部笛卡爾積)。

(2)當連接on條件是非唯一字段時,會出現笛卡爾積(局部笛卡爾積)。

(3)join的兩個表中都含有空值。

怎么避免或解決

(1)關聯范圍在最小粒度的列.

(2)檢查表的關聯字段是否有空值。

數據傾斜

什么是數據傾斜

數據傾斜最籠統(tǒng)概念就是數據的分布不平衡,有些地方數據多,有些地方數據少。在計算過程中有些地方數據早早地處理完了,有些地方數據遲遲沒有處理完成,造成整個處理流程遲遲沒有結束,這就是最直接數據傾斜的表現。

數據傾斜癥狀

Hive

hive自身的MR引擎:發(fā)現所有的map task全部完成,并且99%的reduce task完成,只剩下一個或者少數幾個reduce task一直在執(zhí)行,這種情況下一般都是發(fā)生了數據傾斜。說白了就是Hive的數據傾斜本質上是MapReduce的數據傾斜。

Flink

(1)Flink 任務出現數據傾斜的直觀表現是任務節(jié)點頻繁出現反壓。

(2)部分節(jié)點出現 OOM異常,是因為大量的數據集中在某個節(jié)點上,導致該節(jié)點內存被爆,任務失敗重啟。

Spark

(1)Executor lost,OOM,Shuffle過程出錯。

(2)Driver OOM。

(3)單個Executor執(zhí)行時間特別久,整體任務卡在某個階段不能結束。

(4)正常運行的任務突然失敗。

怎么避免或解決

不管再出現分布式計算框架出現數據傾斜問題解決思路如下:很多數據傾斜的問題,都可以用和平臺無關的方式解決,比如更好的數據預處理,異常值的過濾等。因此,解決數據傾斜的重點在于對數據設計和業(yè)務的理解,這兩個搞清楚了,數據傾斜就解決了大部分了。關注這幾個方面:

業(yè)務邏輯方面

(1)數據預處理。

(2)解決熱點數據:分而治之(第一次打散計算,第二次再最終聚合計算)。

程序代碼層面

(1)導致最終只有一個Reduce任務的,需要想到用替代的關鍵字或者算子去提升Reduce任務數。

(2)調參。

熟悉自己手中的工具(框架)

優(yōu)秀的框架已經負重前行給你優(yōu)化了好多不僅要學,更學會去用,更要努力去完善拓展框架功能。

責任編輯:張燕妮 來源: 大數據左右手
相關推薦

2020-01-20 14:30:39

HTTP概念標頭

2023-03-13 13:36:00

Go擴容切片

2017-10-11 13:42:40

DIY裝機電腦

2018-09-11 09:14:52

面試公司缺點

2021-10-09 09:47:14

Java開發(fā) bug

2021-01-07 05:40:13

BLE模塊Android

2025-01-13 00:17:49

Java開發(fā)對象

2021-02-22 09:00:00

Jenkins工具開發(fā)

2015-12-01 09:02:58

ios界面流暢

2018-08-01 14:45:16

PHP編程語言

2015-04-07 12:19:30

Web開發(fā)開發(fā)資源

2021-06-01 05:16:49

前端開發(fā)技術熱點

2017-11-08 10:54:32

大數據算法機器學習

2012-06-20 15:01:25

iOS開發(fā)

2023-12-05 08:20:05

單例模式Python

2023-06-13 13:52:00

Java 7線程池

2013-10-30 09:53:27

2019-11-25 21:46:12

數據湖云計算數據倉庫

2018-10-20 16:05:12

iOSAPP開發(fā)

2020-08-27 15:02:11

Progress
點贊
收藏

51CTO技術棧公眾號