• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            RDD初探

            Posted on 2015-04-18 22:16 天邊藍(lán) 閱讀(455) 評論(0)  編輯 收藏 引用
            RDD初探 RDD(resilient distributed dataset )是Spark提出的一個創(chuàng)新性的概念,它提供了并行計算個階段中數(shù)據(jù)的有效共享,彌補了MapReduce中的不足。與MapReduce單乏的Map和Reduce相比,在RDD上,Spark提供了豐富的操作,可以讓程序開發(fā)人員利用RDD接口非常容易的編寫出復(fù)雜的數(shù)據(jù)處理程序,先見見Spark版本的WordCount程序: 僅僅兩行代碼,相比MapReduce,是不是簡潔了很多? 官網(wǎng)RDD的定義: Spark revolves around the concept of a resilient distributed dataset (RDD), which is a fault-tolerant collection of elements that can be operated on in parallel. There are two ways to create RDDs: parallelizing an existing collection in your driver program, or referencing a dataset in an external storage system, such as a shared filesystem, HDFS, HBase, or any data source offering a Hadoop InputFormat. RDD的特性: 1.分區(qū)的數(shù)據(jù)集 2.只讀的數(shù)據(jù)集 3.只能從driver程序中已有的集合或外部存儲進(jìn)行創(chuàng)建 4.容錯的,失敗自動的快速重建 分區(qū) 分區(qū),RDD是一個分區(qū)的數(shù)據(jù)集,其分區(qū)的多少決定著對這個RDD進(jìn)行并行計算的粒度,在Spark中,每一個分區(qū)的計算在一個單獨的任務(wù)中執(zhí)行。對RDD的分區(qū)而言,用戶可以指定其分區(qū)的數(shù)目;如果沒有,系統(tǒng)將會使用默認(rèn)值,默認(rèn)情況下,其分區(qū)數(shù)為這個程序所分配到的資源的CPU核的數(shù)目;如, 指定分區(qū)數(shù): 默認(rèn)分區(qū)數(shù): 位置優(yōu)先 在Spark中,秉性著這么一種思想,“移動數(shù)據(jù)不如移動計算”,在Spark任務(wù)調(diào)度的時候,總是盡可能的將任務(wù)分配到數(shù)據(jù)塊存儲的位置。如,對HDFS文件生成的RDD,preferredLocation接口返回其每塊數(shù)據(jù)所在的機器名或IP,在后續(xù)的任務(wù)調(diào)度中,調(diào)度器將盡可能的將計算任務(wù)分配到數(shù)據(jù)存儲的位置,如: RDD依賴關(guān)系 可以說,RDD依賴關(guān)系是Spark任務(wù)調(diào)度最根本的依據(jù)。 在RDD的轉(zhuǎn)換過程中,每次轉(zhuǎn)換都會生成一個新的RDD,在用戶程序中,對于某個RDD往往會有一系列的復(fù)雜的轉(zhuǎn)換,這樣,就形成了一條類似流水線樣的前后依賴關(guān)系。 在Spark中,存在兩種類型的依賴,即窄依賴和寬依賴; ?窄依賴:父RDD的每一個分區(qū)只被子RDD的一個分區(qū)所使用,如:map、filter等; ?寬依賴:父RDD的每一個分區(qū)只被子RDD的多個分區(qū)所使用,如:groupbyKey等; 區(qū)分兩種依賴的原因: 1.窄依賴可以在集群的一個節(jié)點上如流水一般的執(zhí)行,無需物化很多無用的中間RDD,大大提升了計算性能; 2.窄依賴對于節(jié)點計算失敗后的恢復(fù)會更加有效,只要重新計算其對應(yīng)父RDD的相應(yīng)分區(qū)即可; RDD操作 RDD支持兩種操作 ?Transformations:從一個已存的RDD生成一個新的RDD,如map操作 ?Action:執(zhí)行一次計算并將相應(yīng)的計算結(jié)果返回值driver程序,如reduce 在Spark中,所有的Transformation都是惰性的,他們只會記錄其相應(yīng)的依賴關(guān)系,而不會馬上計算其結(jié)果,只有在action要求計算結(jié)果時才會實際計算RDD的值。 Spark提供了豐富的RDD操作,詳細(xì)參考 http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.rdd.RDD RDD的持久化 在Spark中,還有一個最重要的特性就是RDD的持久化。當(dāng)你對一個RDD進(jìn)行持久化操作時,spark會將該RDD的每個分區(qū)的第一次計算結(jié)果保存在相應(yīng)的存儲介質(zhì)中。之后對該RDD的訪問可以直接訪問其存儲的結(jié)果,這樣我們可以將一些訪問比較頻繁的RDD進(jìn)行持久化到內(nèi)存中來,加快程序的處理時間(官網(wǎng)提供的數(shù)據(jù)時通常會加快速度10倍以上) RDD的持久化通過persist() 和 cache() 方法實現(xiàn);

            Copyright © 天邊藍(lán)

            91麻精品国产91久久久久| 久久99国产精品99久久| 久久成人精品| 久久综合九色综合网站| 久久人人爽爽爽人久久久| 久久国产精品久久| 亚洲精品成人网久久久久久| 久久久久人妻精品一区二区三区| 久久精品无码一区二区三区| 亚洲国产成人精品91久久久| 久久天天躁狠狠躁夜夜96流白浆| 欧美久久久久久精选9999| 久久久久久久亚洲Av无码| 婷婷久久综合九色综合绿巨人| 国产精品女同久久久久电影院| 国产精品青草久久久久福利99| 久久亚洲精品国产精品婷婷 | 精品久久亚洲中文无码| 久久天堂电影网| 久久精品国产99久久无毒不卡| 亚洲国产精品无码久久九九| 99久久精品国产一区二区| 亚洲成色www久久网站夜月| 久久久无码精品亚洲日韩软件| 久久国产免费观看精品3| 精品久久久久久国产| 色婷婷噜噜久久国产精品12p| 国内精品久久久久久麻豆 | 精品国产乱码久久久久软件| 国产精品永久久久久久久久久| 精品久久久久香蕉网| 国产麻豆精品久久一二三| 久久久国产乱子伦精品作者| 国产69精品久久久久9999APGF| 久久午夜福利电影| 青春久久| 久久久久se色偷偷亚洲精品av | 久久久久99精品成人片直播| 久久久久青草线蕉综合超碰| 亚洲午夜久久久久久久久电影网 | 久久亚洲精品成人av无码网站|