Spark中如何以序列化方式調(diào)優(yōu)

小編給大家分享一下Spark中如何以序列化方式調(diào)優(yōu),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站主要從事做網(wǎng)站、網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)愛民,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

在任何分布式應(yīng)用中序列化都扮演者一個重要的角色。序列化過程非常慢的或者消耗大量字節(jié)的序列化格式,都是會巨大的減緩計算速度。通常這是優(yōu)化spark應(yīng)用程序的第一件事情。Spark目標(biāo)是在你的操作中直接便利的使用java類型和性能找到一個平衡點(diǎn)。目前,spark提供兩種序列化的庫:

1.Java serialization:默認(rèn)情況下,spark使用Java的 ObjectOutputStream框架,序列化對象。可以應(yīng)用于任何繼承了java.io.Serializable的自創(chuàng)建類。你也可以通過更密切的繼承java.io.Externalizable,來控制你自己的序列化方式的性能。JAVA的序列化雖然靈活,但是通常是非常慢的,同時針對很多類會導(dǎo)致大的序列化格式。

2.Kryo serialization:Spark也可以用 Kryo library (version 2) 來加速序列化。Kryo比java序列化更快,更緊湊(往往搞出10倍),但是并不支持所有的序列化類型,為了達(dá)到最佳的性能需要提前注冊你在你的程序中使用的類。

你可以通過使用SparkConf更改spark的序列化方式。這個設(shè)置不僅影響到worker間傳輸?shù)腟huffle數(shù)據(jù)也會序列化準(zhǔn)備寫到磁盤的RDD。Kryo不是默認(rèn)序列化方式的主要原因是需要自定義注冊。我們建議使用它在任何網(wǎng)絡(luò)密集型應(yīng)用程序中。

Spark會自動的包括Kryo,針對大多數(shù)通用的scala類。

向Kryo注冊你的類,可以通過registerKryoClasses 方法

val conf = new SparkConf().setMaster(...).setAppName(...)

conf.registerKryoClasses(Array(classOf[MyClass1], classOf[MyClass2]))

val sc = new SparkContext(conf)

    https://github.com/EsotericSoftware/kryo 鏈接文檔描述了更先進(jìn)的kryo注冊選項(xiàng),如添加自定義序列化代碼。

如果你的對象非常大,你需要增加spark.kryoserializer.buffer。這個值要大于你要序列化的最大的對象。

最后,如果不向Kyro注冊你的自定義類型,Kyro也會繼續(xù)工作,但是他會保存你每個對象的類全名,這非常浪費(fèi)。

關(guān)于spark對Kyro的配置的支持,請參考。

http://spark.apache.org/docs/1.6.0/configuration.html#compression-and-serialization

Spark中如何以序列化方式調(diào)優(yōu)

以上是“Spark中如何以序列化方式調(diào)優(yōu)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前題目:Spark中如何以序列化方式調(diào)優(yōu)
文章起源:http://muchs.cn/article16/jpdpgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、網(wǎng)站排名、關(guān)鍵詞優(yōu)化、網(wǎng)站建設(shè)面包屑導(dǎo)航、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)