详情页标题前

阿里云云原生大数据计算服务 MaxCompute使用说明-云淘科技

详情页1

本文为您介绍如何运行MaxCompute Graph作业

运行作业

MaxCompute客户端提供一个JAR命令用于运行MaxCompute Graph作业,其使用方式与MapReduce中的JAR命令相同。

使用语法如下。

Usage: jar [] 
[ARGS] -conf Specify an application configuration file -classpath classpaths used to run mainClass -D = Property value pair, which will be used to run mainClass -local Run job in local mode -resources file/table resources used in graph, seperate by comma

其中包括以下参数(均为可选):

  • -conf :指定JobConf配置文件。
  • -classpath :本地执行时的classpath,主要用于指定main函数所在的JAR包。
    通常,用户更习惯于将main函数与Graph作业编写在一个包中,例如单源最短距离。因此,在执行示例程序时,-resources及-classpath的参数中都出现了JAR包,但二者意义不同:

    • -resources引用的是Graph作业,运行于分布式环境中。
    • -classpath引用的是main函数,运行于本地,指定的JAR包路径也是本地文件路径。包名之间使用系统默认的文件分割符进行分割(通常,Windows系统是分号,Linux系统是冒号)。
  • -D =:本地执行时,的Java属性可以定义多个。
  • -local:以本地模式执行Graph作业,主要用于程序调试。
  • -resources :Graph作业运行时使用的资源声明。通常,resource_name_list中需要指定运行Graph作业所使用的资源名称。如果您在Graph作业中读取了其他MaxCompute资源,则这些资源名称也需要被添加到中。资源之间使用逗号分隔。如果使用跨项目空间资源时,需要在前面加上PROJECT_NAME/resources/。示例:-resources otherproject/resources/resfile

同时,您也可以直接运行Graph作业的main函数,直接将作业提交到MaxCompute,而不是通过MaxCompute客户端提交作业。以PageRank算法为例,如下所示。

public static void main(String[] args) throws Exception {
  if (args.length = 3)
    job.setMaxIteration(Integer.parseInt(args[2]));
  long startTime = System.currentTimeMillis();
  job.run();
  System.out.println("Job Finished in "
      + (System.currentTimeMillis() - startTime) / 1000.0
      + " seconds");
}

输入及输出

MaxCompute Graph作业的输入输出限制为表,不允许您自定义输入输出格式。

  • 作业输入定义如下。
    GraphJob job = new GraphJob();
    job.addInput(TableInfo.builder().tableName(“tblname”).build());  //表作为输入。
    job.addInput(TableInfo.builder().tableName(“tblname”).partSpec("pt1=a/pt2=b").build()); //分区作为输入。
    //只读取输入表的col2和col0列,在GraphLoader的load方法中,record.get(0)得到的是col2列,顺序一致。
    job.addInput(TableInfo.builder().tableName(“tblname”).partSpec("pt1=a/pt2=b").build(), new String[]{"col2", "col0"});


    说明

    • 支持多路输入。
    • addInput框架读取输入表的记录传给用户自定义的GraphLoader,载入图数据。
    • 暂时不支持分区过滤条件,更多应用限制请参见 应用限制。
  • 作业输出定义如下所示。
    GraphJob job = new GraphJob();
    //输出表为分区表时需要给到最末一级分区
    job.addOutput(TableInfo.builder().tableName("table_name").partSpec("pt1=a/pt2=b").build());
    //下面的参数中,true表示覆盖tableinfo指定的分区,即INSERT OVERWRITE语义,false表示INSERT INTO语义。
    job.addOutput(TableInfo.builder().tableName("table_name").partSpec("pt1=a/pt2=b").lable("output1").build(), true);


    说明

    • 支持多路输出,通过Label标识每路输出。
    • Graph作业在运行时可以通过WorkerContext的write方法写出记录到输出表,多路输出需要指定标识。

读取资源

  • 通过GraphJob读取资源。
    除了通过JAR命令指定Graph读取的资源外,还可以通过GraphJob的以下两种方法指定。

    void addCacheResources(String resourceNames)
    void addCacheResourcesToClassPath(String resourceNames)
  • 通过WorkerContext读取资源。
    您可以通过WorkerContext的相应上下文对象读取资源。

    public byte[] readCacheFile(String resourceName) throws IOException;
    public Iterable readCacheArchive(String resourceName) throws IOException;
    public Iterable readCacheArchive(String resourceName, String relativePath)throws IOException;
    public Iterable readResourceTable(String resourceName);
    public BufferedInputStream readCacheFileAsStream(String resourceName) throws IOException;
    public Iterable readCacheArchiveAsStream(String resourceName) throws IOException;
    public Iterable readCacheArchiveAsStream(String resourceName, String relativePath) throws IOException;
                            


    说明

    • Graph也支持在WorkerComputer的setup方法中读取资源,保存在Worker Value中,之后通过getWorkerValue方法获取。
    • 如果您需要在读取资源的同时并行进行资源处理,可以使用上述流接口。该读取方式可以减少内存的消耗。
    • 更多应用限制请参见应用限制。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/159803.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云RDS数据库DescribeDBInstancesForClone – 获取克隆数据库实例-云淘科技

    调用DescribeDBInstancesForClone查看实例列表。 接口说明 本接口已下线,请勿使用。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试调试授权信息下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使…

    阿里云数据库 2023年12月9日
  • 阿里云负载均衡DeleteAccessControlList – 删除访问控制策略组-云淘科技

    删除访问控制策略组。 接口说明 说明 只有当要删除的访问控制策略组没有绑定任何监听时,才可以删除。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试调试授权信息下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给…

    阿里云负载均衡 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云RDS数据库ModifyInstanceAutoRenewalAttribute – 修改RDS实例的自动续费设置-云淘科技

    该接口用于修改RDS实例的自动续费设置。 接口说明 适用引擎 RDS MySQL RDS PostgreSQL RDS SQL Server RDS MariaDB 相关功能文档 警告 该API操作涉及费用,请仔细阅读相关功能文档后再进行操作。 RDS MySQL自动续费 RDS PostgreSQL自动续费 RDS SQL Server自动续费 RDS M…

    阿里云数据库 2023年12月9日
  • 阿里云负载均衡UpdateAScripts – 更新可编程脚本-云淘科技

    调用UpdateAScripts接口更新可编程脚本。 接口说明 UpdateAScripts接口属于异步接口,即系统返回一个请求ID,但该可编程脚本尚未更新成功,系统后台的更新任务仍在进行。您可以调用ListAScripts查询可编程脚本的更新状态: 当可编程脚本处于Configuring状态时,表示可编程脚本正在更新中。 当可编程脚本处于Available…

    阿里云负载均衡 2023年12月10日
  • 阿里云负载均衡ListTagValues – 查询标签值-云淘科技

    查询指定标签的值。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试调试授权信息下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下: 操作:是指具体的权…

    阿里云负载均衡 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。