溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2021-12-16 11:39:58 來(lái)源:億速云 閱讀:142 作者:小新 欄目:大數(shù)據(jù)

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

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

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

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

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

Spark會(huì)自動(dòng)的包括Kryo,針對(duì)大多數(shù)通用的scala類。

向Kryo注冊(cè)你的類,可以通過(guò)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注冊(cè)選項(xiàng),如添加自定義序列化代碼。

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

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

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

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)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI