MaxFrame作业部分提交功能

本文为您介绍如何使用MaxFrame作业部分提交功能,以及计费说明。

背景信息

MaxCompute超大规模作业,可能存在作业部分Fuxi Instances因数据长尾、死循环等问题长期运行,导致作业整体执行时间拖长甚至超时失败。在默认情况下,MaxCompute对于失败的作业不会保留任何结果数据,造成时间、计算资源的浪费。

针对此场景,MaxFrame支持作业部分提交功能,对整体作业允许小范围的忽略和丢失,即使在作业失败的情况下也可获得已成功运行的Fuxi Instances结果数据。

功能特性

  • 支持的作业类型

    目前仅支持MaxCompute MaxFrame作业。

  • 核心能力

    • MaxFrame作业失败时,会保留已成功运行的Fuxi Instances结果数据。

    • 可通过设置超时时间主动终止长尾作业,保留已成功运行的Fuxi Instances结果数据。

说明

目前“部分提交”功能对于用户主动终止(Cancel)的作业暂不生效。

使用方式

失败作业获取部分结果

当您开启“部分提交”功能后,即使当前作业最终运行失败,您仍可通过以下方式获取已成功运行的Fuxi Instances结果数据。

您需在作业级别设置以下参数,以启用“部分提交”功能。

options.sql.settings = {
    "odps.sql.always.commit.result": "true"  # 开启部分提交功能
}
  • (推荐)将最终结果写入目标表

    如以下示例作业,最终结果数据写入目标表data_output,用户可查看目标表,获取部分运行成功的结果数据。

    df.mf.flatmap(
        ... # 客户业务逻辑
    ).to_odps_table("data_output").execute()

    同时可在作业Logview中查看已成功的Fuxi Instances:image

  • 通过临时表查询

    若最终结果数据未写入目标表,可通过查询Logview获得MaxFrame自动生成的临时表名,以获取成功运行的结果数据。

    df.mf.flatmap(
        ...
    ).execute()

    查看Logview MaxFrame临时表名:image

设置作业超时获取部分结果

对于可能出现中长尾或死循环等情况的作业,您可主动设置作业超时时间,超时后将强制终止作业,但仍会保留已成功执行的Fuxi Instances的结果数据,您同样可在目标表或临时表中获取部分运行成功的结果数据。

开启“部分提交”功能,并设置作业超时时间:

options.sql.settings = {
    "odps.sql.always.commit.result": "true"  # 开启部分提交功能
    "odps.sql.job.max.time.hours": "1"  # 设置超时时间为 1 小时
}
说明

若作业在设置的超时时间内失败,仍会保留已成功执行的Fuxi Instance结果数据。

计量计费

按量付费

MaxFrame作业使用按量付费模式运行,将按照实际使用的CU时计费。

您可通过用量明细下载作业具体使用信息,详细的下载和分析方法请参见MaxCompute账单用量明细分析

包年包月

MaxFrame作业使用包年包月模式运行,在MaxFrame作业运行时将按照申请量占用包年包月的资源组资源,除此之外无单独费用。