基于 JupyterLab 插件在 GraphScope 中交互式構(gòu)圖

目前 GraphScope 發(fā)布了 graphscope-notebook 插件,通過交互式的方式幫助用戶在 Jupyterlab 環(huán)境下完成圖數(shù)據(jù)的構(gòu)建和載入操作,極大地降低了載圖的復雜度和出錯率。本文將詳細介紹該插件的使用流程。

背景

對于任何一款圖計算產(chǎn)品而言,圖數(shù)據(jù)的載入操作往往是第一步,同時也是比較重要且十分復雜的一步,這其中主要的原因是圖數(shù)據(jù)本身的復雜性。因此,為了提升用戶的載圖體驗,GraphScope 內(nèi)置了多種數(shù)據(jù)集,例如對于 TinkerPop Modorn Graph 圖而言,用戶只需要一條語句即可完成載圖操作:

from graphscope.dataset import load_modern_graph
modern_graph = load_modern_graph()

然而,對于用戶自定義的數(shù)據(jù)集來說,載圖過程卻需要定義一段很長的代碼,我們以 ogbn-mag 這張屬性圖為例:

圖中包含了 4 種類型的頂點和 4 種類型的邊,其中每種邊都有一個標簽(label),并且邊兩端頂點的標簽也是固定的,通常每種類型的頂點、邊都對應(yīng)一個 csv 數(shù)據(jù)文件。

$ tree
├── author_affiliated_with_institution.csv
├── author.csv
├── author_writes_paper.csv
├── field_of_study.csv
├── institution.csv
├── paper_cites_paper.csv
├── paper.csv
└── paper_has_topic_field_of_study.csv

最終對于用戶而言,GraphScope 需要的實際載圖語句如下:

我們可以看到,即便是對于 Python 這樣一門高層的語言,針對上述含有 4 種 label 的屬性圖,其 Schema 的定義代碼也是十分復雜的,更何況動輒上百種 label 的頂點、邊,甚至每種頂點、邊又包含上千種的屬性。

因此,為降低用戶載圖過程中的復雜度和出錯率,GraphScope 開發(fā)了一款 graphscope-notebook 插件,該插件可通過交互式的方式,幫助 GraphScope 用戶在 Jupyterlab 環(huán)境下完成復雜圖數(shù)據(jù)的載入流程。目前,插件已經(jīng)部署在 GraphScope Playground 環(huán)境,歡迎大家試用。

接下來,本文將以這張屬性圖為例,詳細介紹如何在 Jupyterlab 環(huán)境下交互式地完成圖數(shù)據(jù)的載入流程。

安裝插件

插件的使用需要滿足如下條件:

  • JupyterLab >= 3.0
  • GraphScope >= 0.12.0

你可通過如下命令安裝插件:

pip3 install graphscope-notebook

需要注意的是,插件安裝完成后,需要重新啟動 Jupyterlab,最終若左側(cè)邊欄顯示如下,則代表安裝成功;如果安裝失敗,可在 GraphScope 社區(qū)反饋遇到的問題。

使用插件

首先,我們在 Jupyterlab Notebook 中執(zhí)行如下代碼,創(chuàng)建一個 GraphScope Session.

import graphscope
graphscope.set_option(show_log=True)
sess = graphscope.session(cluster_type="hosts")

Session 創(chuàng)建完成后,我們便可以在左側(cè)資源欄目監(jiān)控到該資源,如圖所示,點擊 "+" 按鈕,即可在 Notebook 的右側(cè)打開交互頁面:

1. 創(chuàng)建頂點

接下來我們便可以根據(jù)交互頁面的提示完成圖數(shù)據(jù)頂點的構(gòu)建,以 "paper" 類型的頂點為例,創(chuàng)建頂點頁面如下,信息填寫完成后,點擊 "Create Vertex" 即可完成頂點的構(gòu)建。

其中,各字段解釋如下:

字段 解釋
Label 頂點標簽(label)
Data Source Local File 代表本地數(shù)據(jù)文件; Online File 代表網(wǎng)絡(luò)文件,例如 OSS 等
Location 數(shù)據(jù)源路徑
Header Row 如果為 true,則列名將從源文件的第一行讀取
Delimiter 數(shù)據(jù)分隔符,可選值為空格、","、 ";" 和 "\t"
Extra Params 數(shù)據(jù)載入需要的額外參數(shù),例如 OSS Key, Secret 和 Endpoint
ID Field 源文件中選擇哪一列作為點的 ID,可以是數(shù)字類型的編號如0,1,2,也可以是string類型的名字
Select all Properties 如果為 true,則載入全部屬性,否則需要指定載入的屬性

2. 創(chuàng)建邊

同"創(chuàng)建頂點"一樣,以 "cites" 類型的邊為例 (paper -> cites -> paper),創(chuàng)建邊的頁面如下,信息填寫完成后,點擊 "Create Edge" 即可完成邊的構(gòu)建。

其中,不同于頂點的字段解釋如下:

字段 解釋
Edge Only 如果為 true,則代表該邊不與任何其他頂點文件相關(guān)聯(lián),適用于只有一個邊文件,而沒有頂點文件的情況
Src Vertex Label 源頂點的標簽(label)
Dst Vertex Label 目標頂點的標簽(label)
Src Vertex Field 源文件中哪一列作為源頂點的 ID,可以是數(shù)字類型的編號如0,1,2,也可以是string類型的名字
Dst Vertex Field 源文件中哪一列作為目標頂點的 ID,可以是數(shù)字類型的編號如0,1,2,也可以是string類型的名字

3. 定義圖相關(guān)信息

所有類型的頂點/邊構(gòu)建完成后,我們填寫圖相關(guān)的信息,其中相應(yīng)字段解釋如下:

字段 解釋
Name 圖名字
OID Type 圖原始點類型,可選值為 "string" 和 "int64"
Directed 是否為有向圖
Generate EID 是否為每條邊生成唯一的id,如果需要使用 GIE 圖查詢服務(wù),則設(shè)置為 True

4. 生成載圖語句,完成數(shù)據(jù)載入

信息填寫完成后,鼠標選中 "Notebook Cell",點擊交互頁面的 "Generate Code" 按鈕,即可生成對應(yīng)的載圖語句,執(zhí)行該語句便可完成圖數(shù)據(jù)的載入操作,最終我們可以在左側(cè)資源欄目監(jiān)控到對應(yīng)的圖資源:

至此,我們已經(jīng)成功使用 graphscope-notebook 插件完成了圖數(shù)據(jù)的載入流程,接下來,便可以參考 GraphScope 文檔 在載好的圖上執(zhí)行相應(yīng)的圖計算任務(wù)。

結(jié)語

graphscope-notebook 作為一款 GraphScope 適用于 Jupyterlab 環(huán)境下的插件,目前具備 1) 監(jiān)控 GraphScope 運行時資源; 2) 交互式圖數(shù)據(jù)構(gòu)建等功能,可極大地降低載圖過程中的復雜度和出錯率。除此之外,我們也計劃在后續(xù)的版本中增加圖數(shù)據(jù)的交互式挖掘、可視化分析等相關(guān)功能,歡迎大家關(guān)注 GraphScope。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容