编写Graph

本文将以单源最短距离(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功能,直接提交图计算作业即可。