全部產品
Search
文件中心

MaxCompute:編寫Graph

更新時間:Oct 11, 2024

本文將以單源最短距離(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

操作步驟

  1. 運行MaxCompute用戶端,並執行如下命令建立輸入表sssp_in和輸出表sssp_out。

    CREATE TABLE sssp_in (v bigint, es string);
    CREATE TABLE sssp_out (vertex bigint, value bigint);
  2. 執行Tunnel命令,上傳sssp.txt檔案中的資料至表sssp_in, 並以空格鍵作為兩列的分隔字元。

    tunnel u -fd " " sssp.txt sssp_in;
    說明

    本樣本將sssp.txt檔案儲存在MaxCompute用戶端bin目錄下,實際操作中需要注意sssp.txt檔案的儲存路徑。

  3. 編寫SSSP樣本。

    1. 在IntelliJ IDEA中,建立MaxCompute Java Module,並命名為odps-graph-example-sssp。

      說明

      建立MaxCompute Java Module。詳情請參見建立MaxCompute Java Module

    2. 在建立的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>
    3. 在IntelliJ IDEA中,通過MaxCompute Studio完成一鍵式打包。操作詳情,請參見打包、上傳及註冊

      333

      說明

      本樣本將部署到MaxCompute專案的JAR包命名為odps-graph-example-sssp.jar。

  4. 在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功能,直接提交圖計算作業即可。