本文將以單源最短距離(Single Source Shortest Path,SSSP)算法為例,為您介紹如何編寫Graph作業。
前提條件
已安裝并配置MaxCompute客戶端,并與MaxCompute實例建立連接,詳情請參見MaxCompute客戶端。
已準備IDEA 2024開發工具,并已安裝并配置對應版本MaxCompute Studio(更新時間在2024年度即可),詳情請參見安裝MaxCompute Studio和配置MaxCompute Studio。
已配置Maven版本
apache-maven-3.5.0
。已安裝JDK 1.8或以上版本。
已準備數據文件。本文以sssp.txt文件為例進行演示,數據示例如下。
1 2:2,3:1,4:4 2 1:2,3:2,4:1 3 1:1,2:2,5:1 4 1:4,2:1,5:1 5 3:1,4:1
操作步驟
運行MaxCompute客戶端,并執行如下命令創建輸入表sssp_in和輸出表sssp_out。
CREATE TABLE sssp_in (v bigint, es string); CREATE TABLE sssp_out (vertex bigint, value bigint);
執行Tunnel命令,上傳sssp.txt文件中的數據至表sssp_in, 并以空格鍵作為兩列的分隔符。
tunnel u -fd " " sssp.txt sssp_in;
說明本示例將sssp.txt文件保存在MaxCompute客戶端
bin
目錄下,實際操作中需要注意sssp.txt文件的保存路徑。編寫SSSP示例。
在IntelliJ IDEA中,創建MaxCompute Java Module,并命名為odps-graph-example-sssp。
說明創建MaxCompute Java Module。詳情請參見創建MaxCompute Java Module。
在新建的odps-graph-example-sssp中,創建
BaseLoadingVertexResolver
類和SSSP
類。Java代碼詳情,請參見單源最短距離有向圖。pom.xml文件引用配置代碼如下。<dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-sdk-core</artifactId> <version>0.48.0-public</version> </dependency> <dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-sdk-graph</artifactId> <version>0.48.0-public</version> </dependency> <!-- 用于本地測試 --> <dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-graph-local</artifactId> <version>0.48.0-public</version> </dependency>
在IntelliJ IDEA中,通過MaxCompute Studio完成一鍵式打包。操作詳情,請參見打包、上傳及注冊。
說明本示例將部署到MaxCompute項目的JAR包命名為odps-graph-example-sssp.jar。
在MaxCompute客戶端,執行如下命令運行SSSP。
jar -libjars odps-graph-example-sssp.jar -classpath <LOCAL_JAR_PATH>/odps-graph-example-sssp.jar SSSP 1 sssp_in sssp_out;
LOCAL_JAR_PATH:odps-graph-example-sssp.jar的本地路徑。
完成后執行
select * from sssp_out;
查詢sssp_out表,驗證運行結果。vertex value 1 0 2 2 3 1 4 3 5 2
vertex:代表當前頂點。
value:代表當前vertex到達源點(1)的最短距離。
說明如果您需要使用Graph功能,直接提交圖計算作業即可。