开发Graph

本文为您介绍如何使用MaxCompute Studio开发Graph,包括编写Graph、调试Graph、打包上传和运行Graph。

前提条件

您需要完成以下操作:

  1. 管理项目连接

  2. 创建MaxCompute Java Module

编写Graph

  • 创建MaxCompute Java Class。

    本文以创建BaseLoadingVertexResolver类和SSSP类为例。

    1. Project区域,右键单击Module的源码目录(即src > main > java),选择new > MaxCompute Java

      11

    2. 填写Name并选择类型为GraphLoaderVertex,按下Enter键。

      新建Class

      • Name:填写创建的MaxCompute Java Class名称。

        说明

        如果还没创建package,可以在此处填写 packagename.classname,会自动生成package。

      • 选择类型为GraphLoaderVertex,类型介绍如下:

        • GraphLoader:用于载入图。通过GraphJob的setGraphLoaderClass接口提供GraphLoader实现。

        • Vertex:是图的点的抽象,包含属性:id、value、halted、edges。通过GraphJob的setVertexClass接口提供Vertex实现。

    3. 创建成功后,在编辑界面开发Java程序。 BaseLoadingVertexResolver类和SSSP代码示例详情,请参见单源最短距离

  • 配置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>

    pom.xml文件配置完成后,您可以在Maven面板确认对应的依赖包是否已加载成功。

通过本地运行调试Graph

通过本地运行方式测试,查看Graph的运行结果是否符合预期。

  1. 右键单击编写完成的Java脚本,选择Run

  2. Run/Debug Configurations页面上配置运行参数。

    graph

    • MaxCompute project:选择运行Graph的MaxCompute项目。

    • Download Record limit:下载数据记录限制。默认为100条。

  3. 单击OK,开始运行。

    本文选择本地运行,因此将会读取warehouse目录中指定的表数据作为输入,您可以在控制台查看日志输出。更多warehouse目录的介绍详情,请参见warehouse目录

打包上传

调试成功之后,将Java程序打成JAR包,并作为资源上传至MaxCompute服务端。详情请参见打包、上传和注册

运行Graph

  1. 在IntelliJ IDEA工具的左侧导航栏,单击Project Explorer

  2. 右键单击项目名称,选择Open in Console

  3. Console区域运行Graph,命令示例如下,请根据实际情况替换其中的MainClass、输入表及输出表后运行命令。

    更多命令,请参见JAR命令

    jar -libjars xxx.jar -classpath /Users/home/xxx.jar com.aliyun.odps.graph.examples.PageRank pagerank_in pagerank_out;
    • PageRank:指Graph程序中定义的MainClass。

    • pagerank_in:输入表。

    • pagerank_out:输出表。