graphFrame和neo4j

由于公司業(yè)務(wù)需要做圖形計算桌硫,所以最近一直在找很多關(guān)于graphFrame和neo4j的資料

graphFrame:

1.graphFrame是基于DataFrame的圖計算

2.graphFrame主要由vertice(頂點)和edge(邊)組成

vertice:主要是描述一個個體,比如XX公司健蕊,其中包含它的屬性;vertice有一個屬性ID必須要設(shè)置

edge:主要是描述關(guān)系,即各個頂點(節(jié)點)之間的關(guān)系,由三個屬性設(shè)置,src(source)起始節(jié)點ID恬吕,dst(distinct)目的節(jié)點ID,relation關(guān)系

3.然后通過創(chuàng)建GraphFrame(vertices,edges)圖對象须床,可以想象一下铐料,兩個點由一條線相連,點代表節(jié)點豺旬,線代表節(jié)點之間的關(guān)系钠惩,記住這個關(guān)系是有方向的,即src->dst

4.graphFrame里面還有一個很重要的概念:連接組件族阅。即Components

運行連接組件算法需要預(yù)先提供一個checkpoint目錄(這個必須設(shè)置篓跛,不設(shè)置程序運行直接報錯),并使用setCheckpointDir方法來實現(xiàn)坦刀。

spark.sparkContext().setCheckpointDir("./temp/check_path");

代碼實現(xiàn):GraphFrame g=new GraphFrame(vertices,deges);

connectedComponents com=g.connectedComponents愧沟;

DataSet<Row> conDS=com.run();

5.每一個連通組件都自動會生成一個component號,即可以通過字段component進(jìn)行g(shù)roupby,這之后就是同一個連通組件中的節(jié)點都被分配到了一組鲤遥。

換種理解方式沐寺,有關(guān)聯(lián)的一組點構(gòu)成一個連接組件,該組件有一個固定的component號盖奈。

如果對一個圖對象直接show的話混坞,你會發(fā)現(xiàn),它包含頂點節(jié)點所有的字段外加一個component字段卜朗,但是它并不包含邊的字段。

6.網(wǎng)上關(guān)于graphFrame的資料相對來說很少了咕村,

給個中文鏈接吧:https://docs.microsoft.com/zh-cn/azure/databricks/spark/latest/graph-analysis/graphframes/user-guide-scala

7.練習(xí)理解:

(1)查找復(fù)雜關(guān)系

g.find("(a)-[e]->(b); (b)-[e2]->(a)").show()

個人理解:(src)-(關(guān)系)->(dst)场钉,所以上面的需求就是找出相互有關(guān)系的頂點,即a->b,b->c懈涛。為什么有兩組逛万,因為從b或者c開始都滿足上面的find條件

(2)關(guān)系查找過濾:

g.find("(a)-[e]->(b); (b)-[e2]->(a)").filter("b.age>30").show()

filter只能在find之后使用,這樣再過濾之后又細(xì)分了a,b的要求,即只保留了一組數(shù)據(jù)

(3)廣度優(yōu)先搜索(BFS)

g.bfs.fromExpr("name = 'Esther'").toExpr("age < 32").run().show()

從一個頂點到其他頂點宇植,滿足過濾條件的

(4)BFS加過濾條件

g.bfs.fromExpr("name = 'Esther'").toExpr("age < 32").edgeFilter("relationship != 'friend'").maxPathLength(3).run().show()

from,to滿足各自的過濾條件得封,且要滿足邊的關(guān)系條件,還要滿足3個頂點的體條件

(5)連接組件:

//設(shè)置檢查點

session.sparkContext.setCheckpointDir("/temp")

g.connectedComponents.run().show()

不設(shè)置檢查點無法使用連接組件

一組連接組件包含許多頂點指郁,一組連接組件有一個相同的component號

(6)最短路徑

最短路徑:查找每個節(jié)點到目標(biāo)節(jié)點的最短路徑忙上。

g.shortestPaths.landmarks(Seq("a","d")).run().show()

目標(biāo)節(jié)點即a,d;查找其他每個節(jié)點到a,d節(jié)點的路徑闲坎,有方向限制的

(7)三角形計數(shù)

三角計數(shù):計算每個節(jié)點都是三角形的一部分的總節(jié)點數(shù)疫粥。

val results = g.triangleCount.run()

results.select("id","count").show()

即計算構(gòu)成三角形的節(jié)點數(shù),但是這個三角形的邊是有方向限制的

neo4j:

1.neo4j是一個NoSQL圖數(shù)據(jù)庫

2.主要語法:match (node-name:label-name) return node-name

node-name(節(jié)點名稱):相當(dāng)于表中的數(shù)據(jù)

label-name(標(biāo)簽名稱):相當(dāng)于表

3.語法和關(guān)系型數(shù)據(jù)庫很相似腰懂,可以參考MySQL

4.如果自學(xué)neo4j梗逮,建議可以下載一個社區(qū)版的來進(jìn)行學(xué)習(xí)

5.學(xué)習(xí)鏈接:https://www.w3cschool.cn/neo4j/neo4j-5anu1xf7.html

6.一個不錯的Demo實例:http://www.reibang.com/p/2eab82cf2a08

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市绣溜,隨后出現(xiàn)的幾起案子慷彤,更是在濱河造成了極大的恐慌,老刑警劉巖怖喻,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件底哗,死亡現(xiàn)場離奇詭異,居然都是意外死亡罢防,警方通過查閱死者的電腦和手機(jī)艘虎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咒吐,“玉大人野建,你說我怎么就攤上這事√裉荆” “怎么了候生?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绽昼。 經(jīng)常有香客問我唯鸭,道長,這世上最難降的妖魔是什么硅确? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任目溉,我火速辦了婚禮,結(jié)果婚禮上菱农,老公的妹妹穿的比我還像新娘缭付。我一直安慰自己,他們只是感情好循未,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布陷猫。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绣檬。 梳的紋絲不亂的頭發(fā)上足陨,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機(jī)與錄音娇未,去河邊找鬼墨缘。 笑死,一個胖子當(dāng)著我的面吹牛忘蟹,可吹牛的內(nèi)容都是我干的飒房。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼媚值,長吁一口氣:“原來是場噩夢啊……” “哼狠毯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起褥芒,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤嚼松,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后锰扶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體献酗,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年坷牛,在試婚紗的時候發(fā)現(xiàn)自己被綠了罕偎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡京闰,死狀恐怖颜及,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蹂楣,我是刑警寧澤俏站,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站痊土,受9級特大地震影響肄扎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赁酝,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一犯祠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酌呆,春花似錦衡载、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至藤乙,卻和暖如春猜揪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坛梁。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工而姐, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人划咐。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓拴念,卻偏偏與公主長得像,于是被迫代替她去往敵國和親褐缠。 傳聞我的和親對象是個殘疾皇子政鼠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345