W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
GraphX提供了幾種方式從RDD或者磁盤上的頂點(diǎn)和邊集合構(gòu)造圖。默認(rèn)情況下,沒有哪個(gè)圖構(gòu)造者為圖的邊重新分區(qū),而是把邊保留在默認(rèn)的分區(qū)中(例如HDFS中它們的原始?jí)K)。Graph.groupEdges:Graph[VD,ED])需要重新分區(qū)圖,因?yàn)樗俣ㄏ嗤倪厡?huì)被分配到同一個(gè)分區(qū),所以你必須在調(diào)用groupEdges之前調(diào)用Graph.partitionBy
object GraphLoader {
def edgeListFile(
sc: SparkContext,
path: String,
canonicalOrientation: Boolean = false,
minEdgePartitions: Int = 1)
: Graph[Int, Int]
}
GraphLoader.edgeListFile提供了一個(gè)方式從磁盤上的邊列表中加載一個(gè)圖。它解析如下形式(源頂點(diǎn)ID,目標(biāo)頂點(diǎn)ID)的連接表,跳過以#
開頭的注釋行。
# This is a comment
2 1
4 1
1 2
它從指定的邊創(chuàng)建一個(gè)圖,自動(dòng)地創(chuàng)建邊提及的所有頂點(diǎn)。所有的頂點(diǎn)和邊的屬性默認(rèn)都是1。canonicalOrientation
參數(shù)允許重定向正方向(srcId < dstId)的邊。這在connected components算法中需要用到。minEdgePartitions
參數(shù)指定生成的邊分區(qū)的最少數(shù)量。邊分區(qū)可能比指定的分區(qū)更多,例如,一個(gè)HDFS文件包含更多的塊。
object Graph {
def apply[VD, ED](
vertices: RDD[(VertexId, VD)],
edges: RDD[Edge[ED]],
defaultVertexAttr: VD = null)
: Graph[VD, ED]
def fromEdges[VD, ED](
edges: RDD[Edge[ED]],
defaultValue: VD): Graph[VD, ED]
def fromEdgeTuples[VD](
rawEdges: RDD[(VertexId, VertexId)],
defaultValue: VD,
uniqueEdges: Option[PartitionStrategy] = None): Graph[VD, Int]
}
Graph.apply(ClassTag[VD],ClassTag[ED]):Graph[VD,ED])允許從頂點(diǎn)和邊的RDD上創(chuàng)建一個(gè)圖。重復(fù)的頂點(diǎn)可以任意的選擇其中一個(gè),在邊RDD中而不是在頂點(diǎn)RDD中發(fā)現(xiàn)的頂點(diǎn)分配默認(rèn)的屬性。
Graph.fromEdges允許僅僅從一個(gè)邊RDD上創(chuàng)建一個(gè)圖,它自動(dòng)地創(chuàng)建邊提及的頂點(diǎn),并分配這些頂點(diǎn)默認(rèn)的值。
Graph.fromEdgeTuples(ClassTag[VD]):Graph[VD,Int])允許僅僅從一個(gè)邊元組組成的RDD上創(chuàng)建一個(gè)圖。分配給邊的值為1。它自動(dòng)地創(chuàng)建邊提及的頂點(diǎn),并分配這些頂點(diǎn)默認(rèn)的值。它還支持刪除邊。為了刪除邊,需要傳遞一個(gè)PartitionStrategy為值的Some
作為uniqueEdges
參數(shù)(如uniqueEdges = Some(PartitionStrategy.RandomVertexCut))。分配相同的邊到同一個(gè)分區(qū)從而使它們可以被刪除,一個(gè)分區(qū)策略是必須的。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: