中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

spark kryo序列化怎么實現

發布時間:2021-12-16 15:00:26 來源:億速云 閱讀:128 作者:iii 欄目:云計算

這篇文章主要介紹“spark kryo序列化怎么實現”,在日常操作中,相信很多人在spark kryo序列化怎么實現問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”spark kryo序列化怎么實現”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

        廣播大變量,每個executor可以對應一個blockmanager里面存著變量,雖然我們減少了網絡傳輸,減少了內存占用整體空間,但是還可以進一步減小網絡傳輸和內存占用空間,所以我們可以用kryo序列化機制!還可以進一步優化,優化這個序列化格式。

        默認情況下,Spark內部是使用Java的序列化機制,ObjectOutputStream / ObjectInputStream,對象輸入輸出流機制,來進行序列化這種默認序列化機制的好處在于,處理起來比較方便;也不需要我們手動去做什么事情,只是,你在算子里面使用的變量,必須是實現Serializable接口的,可序列化即可。但是缺點在于,默認的序列化機制的效率不高,序列化的速度比較慢;序列化以后的數據,占用的內存空間相對還是比較大。

        可以手動進行序列化格式的優化Spark支持使用Kryo序列化機制。Kryo序列化機制,比默認的Java序列化機制,速度要快,序列化后的數據要更小,大概是Java序列化機制的1/10。所以Kryo序列化優化以后,可以讓網絡傳輸的數據變少;在集群中耗費的內存資源大大減少。

Kryo序列化機制,一旦啟用以后,會生效的幾個地方:

  • 算子函數中使用到的外部變量,肯定要傳輸的時候要序列化了

    • 算子函數中使用到的外部變量,使用Kryo以后:優化網絡傳輸的性能,可以優化集群中內存的占用和消耗,算子函數中用到了外部變量,會序列化,使用Kryo

  • 持久化RDD時進行序列化,StorageLevel.MEMORY_ONLY_SER

    • 持久化RDD,優化內存的占用和消耗;持久化RDD占用的內存越少,task執行的時候,創建的對象,就不至于頻繁的占滿內存,頻繁發生GC。當使用了序列化的持久化級別時,在將每個RDD partition序列化成一個大的字節數組時,就會使用Kryo進一步優化序列化的效率和性能。

  • shuffle

    • shuffle:可以優化網絡傳輸的性能在進行stage間的task的shuffle操作時,節點與節點之間的task會互相大量通過網絡拉取和傳輸文件,此時,這些數據既然通過網絡傳輸,也是可能要序列化的,就會使用Kryo。

      SparkConf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")


  1. 在SparkConf中設置一個屬性,spark.serializer,org.apache.spark.serializer.KryoSerializer類;

  • Kryo之所以沒有被作為默認的序列化類庫的原因,就要出現了:主要是因為Kryo要求,如果要達到它的最佳性能的話,那么就一定要注冊你自定義的類(比如,你的算子函數中使用到了外部自定義類型的對象變量,這時,就要求必須注冊你的類,否則Kryo達不到最佳性能)。感覺很麻煩,所以沒有默認。

  • 注冊你使用到的,需要通過Kryo序列化的,一些自定義類,SparkConf.registerKryoClasses()

    項目中的使用:
    .set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
    .registerKryoClasses(new Class[]{CategorySortKey.class})

到此,關于“spark kryo序列化怎么實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

图木舒克市| 和平县| 明星| 大邑县| 安远县| 瑞金市| 舞钢市| 弋阳县| 瓦房店市| 霍林郭勒市| 乌兰察布市| 华安县| 南宫市| 共和县| 亳州市| 富蕴县| 庐江县| 青海省| 吉林市| 百色市| 定州市| 全椒县| 湟中县| 南开区| 吉水县| 罗山县| 尖扎县| 临猗县| 稷山县| 兴城市| 循化| 承德县| 抚顺市| 卢湾区| 忻州市| 永年县| 定结县| 田林县| 沂水县| 白山市| 榆林市|