精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

大數據開發技術的數據傾斜是怎樣造成的如何查看和解決

Wildesbeast ? 來源:搜狐新聞 ? 作者:千鋒大數據開發學 ? 2019-11-09 13:58 ? 次閱讀

常見的數據傾斜是怎么造成的?

Shuffle的時候,將各個節點上相同的key拉取到某個節點的一個task進行處理,比如按照key進行聚合或join等操作,如果某個key對應的數據量特別大的話,就會發生數據傾斜現象。數據傾斜就成為了整個task運行時間的短板。

觸發shuffle的常見算子:distinct、groupByKey、reduceByKey、aggregateByKey、join、cogroup、repartition等。

要解決數據傾斜的問題,首先要定位數據傾斜發生在什么地方。

首先是哪個stage,直接在Web UI上看就可以,一般出現傾斜都是耗時特別長的Stage,然后查看運行耗時的task,一般是其中的某幾個Task一直拖著,其他的Task早已經完成了,根據這個task,根據stage劃分原理,推算出數據傾斜發生在哪個shuffle類算子上。

如何查看發生傾斜的RDD呢?

如果是Spark RDD執行shuffle算子導致的數據傾斜,那么可以在Spark作業中加入查看key分布的代碼,比如RDD.countByKey()。然后對統計出來各個key出現的次數,collect、take到客戶端打印一下,就可以看到key的分布情況。

以下方法可以大概看出哪個key出現了傾斜:

JavaPairRDDhssData = getHssData(fs, sc, hssPath);

JavaPairRDDsample = hssData.sample(false, 0.1);

MapcountByKey = sample.countByKey();

出現傾斜的key有兩種情況:

1、某個可以出現傾斜

2、多個key出現傾斜

某個Key出現傾斜解決辦法:

通過上述方法可以知道是哪個Key出現了傾斜,所以可以先通過filter方法過濾掉傾斜的Key,把傾斜的Key和沒有傾斜的Key分開處理,由于Spark運行機制,所以單獨處理傾斜Key的時候就不會再出現傾斜現象。

上述方法只能處理特定的數據傾斜,對于實際的生產環境可能并不怎么適用,這事是解決傾斜的其中一個方法。

多個Key出現傾斜的解決辦法:

原理:在傾斜Shuffle之前給每一個Key都加上一個隨機前綴,然后再給加了前綴的Key進行一個Shuffle操作,在Shuffle操作后再把Key的前綴去掉。在這個過程中由于前綴的加入,會把傾斜的Key隨機的分配到不同的Task。然后去掉前綴從而解決數據傾斜的問題。

private static JavaPairRDDrepar(

JavaPairRDD。Cdr) {

JavaPairRDDmapToPair;

try {

mapToPair = 。Cdr

.mapToPair(new PairFunctiontuple2, String, agg() {

@Override

public Tuple2call(Tuple2t)

throws Exception {

//產生隨機前綴,隨機數大小看情況決定

long i = (long) (Math.random() * 150);

//添加隨機數前綴

return new Tuple2(i + _ + t._1, t._2);

}

}).sortByKey()//進行一個Shuffle操作打亂Key

//去掉隨機數前綴

.mapToPair(new PairFunctiontuple2, String, agg() {

@Override

public Tuple2call(Tuple2t)

throws Exception {

String str = t.1.split()[0];

return new Tuple2(str, t._2);

}

});

} catch (Exception e) {

return null;

}

return mapToPair;

}

以上是解決RDD數據傾斜簡單方法。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RDD
    RDD
    +關注

    關注

    0

    文章

    7

    瀏覽量

    7967
  • 大數據
    +關注

    關注

    64

    文章

    8863

    瀏覽量

    137303
收藏 人收藏

    評論

    相關推薦

    大數據技術經驗交流 場景化數據算法

    可視化數據指導,讓每一個人看懂大數據;多場景數據算法,讓所有數據都有跡可循;大數據技術經驗交流群
    發表于 06-01 17:12

    常用大數據處理技術歸類

    “21世紀最缺的是什么?人才!”。在大數據發展如此之快的今天,大數據工程師已經成為一個新興職業。大數據是信息技術,是人和人、人和機器、機器和機器交互的內容特征,是最底層的信息
    發表于 02-28 17:02

    如何從零學大數據?

    新如何學習大數據技術大數據怎么入門?怎么做大數據分析?數據科學需要學習那些技術?
    發表于 03-01 15:41

    常見大數據應用有哪些?

    大數據技術為決策提供依據,在***、企業、科研項目等決策中扮演著重要的角色,在社會治理和企業管理中起到了不容忽視的作用,很多國家,如中國、美國以及歐盟等都已將大數據列入國家發展戰略,微軟、谷歌、百度
    發表于 03-13 16:50

    大數據運用的技術

    領域也有所應用,主要可用于數據采集、數據分析以及數據可視化等,因此,大數據開發需學習一定的Python知識。只有完整的學完以上
    發表于 04-08 16:50

    大數據數據類型

    大數據不僅僅是一個數據,它是大數據集的集合,不能使用傳統的計算技術來處理,宏觀上來講,它不僅包括需處理的數據,還包括各種工具、
    發表于 05-11 15:57

    大數據開發核心技術詳解

    數據的核心是云技術和BI。關于大數據和云計算的關系人們通常會有誤解,而且也會把它們混起來說,分別做一句話直白解釋就是:云計算就是硬件資源的虛擬化;大數據就是海量
    發表于 07-26 16:26

    DKHadoop大數據開發框架的構成模塊

    大數據的應用開發太過偏向于底層,學習的難度不是一般的大,所涉及到的技術面廣太大,不是一般人所能夠駕馭得了的。市場上大部分打著hadoop國產發行版,也只是把國外的拿過來重新修改了一下而已。大快
    發表于 10-19 15:12

    大數據平臺開發公司有哪些?

    到大快搜索的名字腦海里的第一反應是莫非又是一個像百度一樣做搜索引擎的公司。完全不是哦,這是一個開放的搜索和大數據技術平臺,提供開放的搜索、大數據和人工只能服務。大快主要是從事大數據
    發表于 11-15 15:17

    大數據應用開發如何入門需要知道這些

    底層,它的學習難度之大真不是你三兩篇分享文章就能說的清楚的,它所涉及的技術層面太多廣泛,都在很大程度上制約了大數據的普及,不然大數據人才也不會如此稀少! 對于想要學習大數據
    發表于 11-26 14:49

    Hive中數據傾斜的原因和解

    Hive中數據傾斜解決實例
    發表于 06-21 16:48

    大數據的定義及其應用

    目錄1、大數據概述1.1. 概述1.2. 大數據定義1.3. 大數據技術發展2、大數據應用2.1. 大數
    發表于 07-12 06:12

    什么是大數據?大數據的特點有哪些

    大數據(big data)目錄1什么是大數據2大數據的定義3大數據的特點[1]4大數據的作用[2]5大數
    發表于 07-12 06:52

    大數據技術與應用是學什么的?

    大數據技術與應用是學什么的?大數據是指無法在一定時間內用常規軟件工具對其內容進行抓取、管理和處理的數據集合。大數據
    發表于 07-27 07:47

    領域大數據應用開發與運行平臺技術研究

    隨著大數據技術在不同領域的快速應用,構建大數據應用系統的開發與運行一體化平臺,降低大數據技術在各
    發表于 12-28 14:28 ?0次下載
    領域<b class='flag-5'>大數據</b>應用<b class='flag-5'>開發</b>與運行平臺<b class='flag-5'>技術</b>研究