日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark RDD解密

發(fā)布時間:2025/1/21 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark RDD解密 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

1.??基于數(shù)據(jù)集的處理:?從物理存儲上加載數(shù)據(jù),然后操作數(shù)據(jù),然后寫入數(shù)據(jù)到物理設備;?

? ? 基于數(shù)據(jù)集的操作不適應的場景:

  • 不適合于大量的迭代:
  • 不適合交互式查詢:每次查詢都需要對磁盤進行交互.
  • 基于數(shù)據(jù)流的方式不能夠復用曾經(jīng)的結(jié)果或者中間的結(jié)果;?
  • 2. RDD彈性數(shù)據(jù)集

    ???特點:?

    ? ? ? ?A)自動的進行內(nèi)存和磁盤數(shù)據(jù)的存儲切換:

    ???????B)?基于lineage的高效容錯;

    ???????C)?Task如果失敗會自動進行重試

    ? ? ? ?D)?Stage如果失敗會自動進行重試,而且只會計算失敗的分片;

    ???????E)?Checkpointpersist.

    3.??數(shù)據(jù)分片的高度彈性.?Partition合并可以提升效率(數(shù)據(jù)比較小的適合),??數(shù)據(jù)大的時候可以提高partition設置,避免OOM.?如果小的分片變大的時候,一般需要shuffle.?可以使用coalesce.

    ??????def?coalesce(numPartitions:?Int,?shuffle:?Boolean?=?false)

        (implicit?ord:?Ordering[T]?=?null):?RDD[T]

    ? ? ? 返回一個新的RDD,且該RDD的分區(qū)個數(shù)等于numPartitions個數(shù)。如果shuffle設置為true,則會進行shuffle.

    ? ? ? def?repartition(numPartitions:?Int)(implicit?ord:?Ordering[T]?=?null):?RDD[T]

    ? ? ?該函數(shù)其實就是coalesce函數(shù)第二個參數(shù)為true的實現(xiàn)

    ? ? ? repartition(numPartitions:Int):RDD[T]coalesce(numPartitions:Intshuffle:Boolean=false):RDD[T]?

    ? ? ? 他們兩個都是RDD的分區(qū)進行重新劃分,repartition只是coalesce接口中shuffletrue的簡易實現(xiàn),(假設RDDN個分區(qū),需要重新劃分成M個分區(qū))

    1)、N<M。一般情況下N個分區(qū)有數(shù)據(jù)分布不均勻的狀況,利用HashPartitioner函數(shù)將數(shù)據(jù)重新分區(qū)為M個,這時需要將shuffle設置為true

    2)如果N>M并且NM相差不多,(假如N1000M100)那么就可以將N個分區(qū)中的若干個分區(qū)合并成一個新的分區(qū),最終合并為M個分區(qū),這時可以將shuff設置為false,在shufflfalse的情況下,如果M>N時,coalesce為無效的,不進行shuffle過程,父RDD和子RDD之間是窄依賴關系。

    3)如果N>M并且兩者相差懸殊,這時如果將shuffle設置為false,父子RDD是窄依賴關系,他們同處在一個Stage中,就可能造成spark程序的并行度不夠,從而影響性能,如果在M1的時候,為了使coalesce之前的操作有更好的并行度,可以講shuffle設置為true

    總之:如果shufffalse時,如果傳入的參數(shù)大于現(xiàn)有的分區(qū)數(shù)目,RDD的分區(qū)數(shù)不變,也就是說不經(jīng)過shuffle,是無法將RDD的分區(qū)數(shù)變多的。

    4. RDD的延遲加載.?Lazy.?構(gòu)造的時候的第一個參數(shù)就是父RDD;

    ? ? ? 就相當于?f(x)?=?x?+?1;?x?=y+1;?y=z+1;?這就是依賴,最終的計算是先計算z的值,然后再計算y的值,最終計算出f(x);

    ? ? ? Spark不產(chǎn)生中間結(jié)果,但是需要手動cachepersist.?內(nèi)存消耗比較大,最主要是sparkshuffle機制(spark1.x以前有數(shù)據(jù)規(guī)模的限制.現(xiàn)在沒有,原因主要是shuffle的原因,但是最新版本以來shuffle支持更多的方式.

    5. ?容錯的兩種方式:?數(shù)據(jù)檢查點和記錄數(shù)據(jù)的更新;

    ? ? ? ? ?Spark采取的是記錄數(shù)據(jù)更新方式容錯為什么更高效:

    ? ? ? ? A)?RDD是不可變?+?lazy:數(shù)據(jù)的恢復需要checkpoint.?比如從第900步恢復的前提是要在900步進行checkpoint.

    ? ? ? ? B)?RDD是粗粒度.??寫操作是粗粒度.但是rdd讀操作既可以是粗粒度也可以是細粒度的.?高效率的.?簡化復雜度.?但有部分場景不適合spark?rdd.?爬蟲就不合適.

    ?

    6. 關于數(shù)據(jù)本地性問題,?如果讀取的是比如mysql,?hbase,那么需要這些集群和spark集群在一個集群里;?這樣都是內(nèi)網(wǎng)進行讀取;?針對不同機房數(shù)據(jù)不同步問題可以采用Tachyon?內(nèi)存同步.

    7. 實時事物性處理不適用spark.

    8.??如果是scala集合的話,那么針對數(shù)據(jù)本地性,是數(shù)據(jù)集合會被copy到計算節(jié)點內(nèi)存當中.

    總結(jié)

    以上是生活随笔為你收集整理的Spark RDD解密的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。