国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        基于Spark的數據分析實踐

        2019-06-19 09:55
        EAWorld
        關注

        轉載本文需注明出處:微信公眾號EAWorld,違者必究。

        引言:

        Spark是在借鑒了MapReduce之上發展而來的,繼承了其分布式并行計算的優點并改進了MapReduce明顯的缺陷。Spark主要包含了Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX等組件。

        本文主要分析了 Spark RDD 以及 RDD 作為開發的不足之處,介紹了 SparkSQL 對已有的常見數據系統的操作方法,以及重點介紹了普元在眾多數據開發項目中總結的基于 SparkSQL Flow 開發框架。

        目錄:

        一、Spark RDD

        二、基于Spark RDD數據開發的不足

        三、SparkSQL

        四、SparkSQL Flow

        一、Spark RDD

        RDD(Resilient Distributed Dataset)叫做彈性分布式數據集,是Spark中最基本的數據抽象,它代表一個不可變、可分區、元素可并行計算的集合。

        RDD具有數據流模型的特點:自動容錯、位置感知性調度和可伸縮性。

        //Scala 在內存中使用列表創建

        val lines = List(“A”, “B”, “C”, “D” …)val rdd:RDD = sc.parallelize(lines);

        可左右滑動查看代碼

        //以文本文件創建

        val rdd:RDD[String] = sc.textFile(“hdfs://path/filename”)

        可左右滑動查看代碼

        Spark RDD Partition 分區劃分

        新版本的 Hadoop 已經把 BlockSize 改為 128M,也就是說每個分區處理的數據量更大。

        Spark 讀取文件分區的核心原理

        本質上,Spark 是利用了 Hadoop 的底層對數據進行分區的 API(InputFormat):

        public abstract class InputFormat<K,V>{  public abstract List<InputSplit> getSplits(JobContextcontext                               ) throwsIOException,InterruptedException;    public abstract RecordReader<K,V> createRecordReader(InputSplitsplit,                                         TaskAttemptContextcontext                                        )throwsIOException,InterruptedException;}

        可左右滑動查看代碼

        Spark 任務提交后通過對輸入進行 Split,在 RDD 構造階段,只是判斷是否可 Split(如果參數異常一定在此階段報出異常),并且 Split 后每個 InputSplit 都是一個分區。只有在Action 算子提交后,才真正用 getSplits 返回的 InputSplit 通過 createRecordReader 獲得每個 Partition 的連接。

        然后通過 RecordReader 的 next() 遍歷分區內的數據。

        Spark RDD 轉換函數和提交函數

        Spark RDD 的眾多函數可分為兩大類Transformation 與 Action。Transformation 與 Action 的區別在于,對 RDD 進行 Transformation 并不會觸發計算:Transformation 方法所產生的 RDD 對象只會記錄住該 RDD 所依賴的 RDD 以及計算產生該 RDD 的數據的方式;只有在用戶進行 Action 操作時,Spark 才會調度 RDD 計算任務,依次為各個 RDD 計算數據。這就是 Spark RDD 內函數的“懶加載”特性。

        二、基于Spark RDD數據開發的不足

        由于MapReduce的shuffle過程需寫磁盤,比較影響性能;而Spark利用RDD技術,計算在內存中流式進行。另外 MapReduce計算框架(API)比較局限, 使用需要關注的參數眾多,而Spark則是中間結果自動推斷,通過對數據集上鏈式執行函數具備一定的靈活性。

        即使 SparkRDD 相對于 MapReduce 提高很大的便利性,但在使用上仍然有許多問題。體現在一下幾個方面:

        RDD 函數眾多,開發者不容易掌握,部分函數使用不當 shuffle時造成數據傾斜影響性能;

        RDD 關注點仍然是Spark太底層的 API,基于 Spark RDD的開發是基于特定語言(Scala,Python,Java)的函數開發,無法以數據的視界來開發數據;

        對 RDD 轉換算子函數內部分常量、變量、廣播變量使用不當,會造成不可控的異常;

        對多種數據開發,需各自開發RDD的轉換,樣板代碼較多,無法有效重利用;

        其它在運行期可能發生的異常。如:對象無法序列化等運行期才能發現的異常。

        1  2  3  4  下一頁>  
        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

        發表評論

        0條評論,0人參與

        請輸入評論內容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續

        暫無評論

        暫無評論

          人工智能 獵頭職位 更多
          掃碼關注公眾號
          OFweek人工智能網
          獲取更多精彩內容
          文章糾錯
          x
          *文字標題:
          *糾錯內容:
          聯系郵箱:
          *驗 證 碼:

          粵公網安備 44030502002758號

          主站蜘蛛池模板: 极品在线视频| 偃师市| 久久AV高潮AV| 69久蜜桃人妻无码精品一区| 久久伊人五月天| 苍井空亚洲精品AA片在线播放| 老司机夜间福利| 成人电影c.cc| 91视频播放| 久久99精品国产| 欧美牲交视频| 成人三级久久久久视频| 黑人又大又粗免费视频| 无码人妻av一区二区三区蜜桃| 91色| 玖草视频在线观看| 美女综合网| 勐海县| 国产亚洲视频在线观看| 青青草论坛| 国产精品18禁久久久久久白浆| 69人妻人人澡人人爽人人精品| 国产97视频| 榆社县| 午夜男人天堂| 草草地址线路①屁屁影院成人| 涪陵区| 桃花岛av| 蜜桃?一区二区视频在线观看| 午夜插逼| 日屄自拍| 国产精品久久久久三级| 张家界市| 叙永县| 亚洲1234区| 日韩av一区二区三区| 亚洲无码在线免费观看| 不卡无码av| 狼友看片| 白浆网站| 黑水县|