最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

基于Spark圖計算的社會網(wǎng)絡分析系統(tǒng)

2023-04-25 22:57 作者:玟玟的大寶貝  | 我要投稿

訪問【W(wǎng)RITE-BUG數(shù)字空間】_[內(nèi)附完整源碼和文檔]

本文在 Spark 及圖計算引擎 GraphX 的基礎(chǔ)上,設(shè)計并實現(xiàn)一套用于頂點分 析的社交網(wǎng)絡分析系統(tǒng),為使用 Spark 進行大規(guī)模社交網(wǎng)絡的頂點分析提供具體 接口,包括社交網(wǎng)絡的圖模型構(gòu)建、頂點重要度估值、頂點間路徑的計算、頂點 分組等接口,并對計算結(jié)果進行了一定程度上的可視化展現(xiàn)。主要工作包括兩個 方面:第一是構(gòu)建圖和數(shù)據(jù)可視化的實現(xiàn);第二是具體的頂點分析接口的實現(xiàn)。

1系統(tǒng)相關(guān)技術(shù)

1.1通用并行框架 Spark

Spark 是由加州大學伯克利分校 AMP 實驗室所開源的類 Hadoop MapReduce 的通用并行框架,Spark 擁有 Hadoop MapReduce 所具有的優(yōu)點;但不同于 MapReduce 的是 Job 中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫 HDFS, 因此 Spark 能更好地適用于數(shù)據(jù)挖掘與機器學習等需要迭代的MapReduce 的算法。

Spark 是一種與 Hadoop 相似的開源集群計算環(huán)境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現(xiàn)得更加優(yōu)越,換句話說,Spark 啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負載。

Spark 是在 Scala 語言中實現(xiàn)的,它將 Scala 用作其應用程序框架。與Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕松地操作分布式數(shù)據(jù)集。

盡管創(chuàng)建 Spark 是為了支持分布式數(shù)據(jù)集上的迭代作業(yè),但是實際上它是對 Hadoop 的補充,可以在 Hadoop 文件系統(tǒng)中并行運行,通過名為 Mesos 的第三方集群框架可以支持此行為。

RDD(Resilient Distributed Datasets),彈性分布式數(shù)據(jù)集,是分布式內(nèi)存的一個抽象概念,RDD 提供了一種高度受限的共享內(nèi)存模型,即 RDD 是只讀的記錄分區(qū)的集合,只能通過對其他 RDD 執(zhí)行確定的轉(zhuǎn)換操作(如 map、join 和 group by)而創(chuàng)建,然而這些限制使得實現(xiàn)容錯的開銷很低。對開發(fā)者而言,RDD 可以看作是 Spark 的一個對象,它本身運行于內(nèi)存中,如讀文件是一個 RDD,對文件計算是一個 RDD,結(jié)果集也是一個 RDD ,不同的分片、數(shù)據(jù)之間的依賴、key-value 類型的 map 數(shù)據(jù)都可以看做 RDD。

1.2圖計算框架 GraphX

Spark GraphX 是一個分布式圖處理框架,Spark GraphX 基于 Spark 平臺提供對圖計算和圖挖掘簡潔易用的而豐富多彩的接口,極大的方便了大家對分布式圖處理的需求。

眾所周知,社交網(wǎng)絡中人與人之間有很多關(guān)系鏈,例如 Twitter、Facebook、微博和微信等,這些都是大數(shù)據(jù)產(chǎn)生的地方都需要圖計算,現(xiàn)在的圖處理基本都是分布式的圖處理,而并非單機處理。Spark GraphX 由于底層是基于 Spark 來處理的,所以天然就是一個分布式的圖處理系統(tǒng)。

圖的分布式或者并行處理其實是把圖拆分成很多的子圖,然后分別對這些子圖進行計算,計算的時候可以分別迭代進行分階段的計算,即對圖進行并行計算。

1.3動態(tài)圖形組件 GraphStream

GraphStream 是一個 Java 類庫,用于管理動態(tài)圖形。它由一個面向?qū)ο蟮?API 組成,能夠以簡便、快速的方式在一張圖形中添加邊緣和節(jié)點,并讓它們進行演變[15]。

1.4函數(shù)式編程語言 Scala

Scala 是一門多范式的編程語言,一種類似 java 的編程語言,設(shè)計初衷是實現(xiàn)可伸縮的語言,并集成命令式編程、面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。Scala 有幾項關(guān)鍵特性表明了它的面向?qū)ο蟮谋举|(zhì)。例如,Scala 中的每個值都是一個對象,包括基本數(shù)據(jù)類型(即布爾值、數(shù)字等)在內(nèi),連函數(shù)也是對象。另外,類可以被子類化,而且 Scala 還提供了基于 mixin 的組合(mixin-based com position)。

與只支持單繼承的語言相比,Scala 具有更廣泛意義上的類重用。Scala 允許定義新類的時候重用“一個類中新增的成員定義(即相較于其父類的差異之處)”, Scala 稱之為 mixin 類組合。

Scala 還包含了若干函數(shù)式語言的關(guān)鍵概念,包括高階函數(shù)(Higher-Order Function)、局部套用(Currying)、嵌套函數(shù)(Nested Function)、序列解讀(Se quence Comprehensions)等等。

Scala 是靜態(tài)類型的,這就允許它提供泛型類、內(nèi)部類、甚至多態(tài)方法(Po lymorphic Method)。另外值得一提的是,Scala 被特意設(shè)計成能夠與 Java 和.NE T 互操作。Scala 當前版本還不能在.NET 上運行,但按照計劃將來可以在.NET 上運行。

Scala 可以與 Java 互操作。它用 scalac 這個編譯器把源文件編譯成 Java 的 cl ass 文件(即在 JVM 上運行的字節(jié)碼)。你可以從 Scala 中調(diào)用所有的 Java 類庫, 也同樣可以從 Java 應用程序中調(diào)用 Scala 的代碼。用 David Rupp 的話來說,它也可以訪問現(xiàn)存的數(shù)之不盡的 Java 類庫,這讓 Java 類庫遷移到 Scala 變得更加容易。


基于Spark圖計算的社會網(wǎng)絡分析系統(tǒng)的評論 (共 條)

分享到微博請遵守國家法律
金秀| 金沙县| 古交市| 武功县| 南涧| 台湾省| 合水县| 昌宁县| 永宁县| 沾益县| 台江县| 田东县| 内乡县| 安图县| 赤城县| 临夏市| 文昌市| 蒙城县| 沁源县| 临洮县| 敖汉旗| 安宁市| 垦利县| 偏关县| 康定县| 东至县| 临湘市| 武强县| 鹤山市| 霍州市| 平乐县| 密云县| 开封市| 叶城县| 金华市| 通江县| 武安市| 泰宁县| 九寨沟县| 敖汉旗| 临城县|