本文为您介绍如何使用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:
通过临时表查询
若最终结果数据未写入目标表,可通过查询Logview获得MaxFrame自动生成的临时表名,以获取成功运行的结果数据。
df.mf.flatmap( ... ).execute()
查看Logview MaxFrame临时表名:
设置作业超时获取部分结果
对于可能出现中长尾或死循环等情况的作业,您可主动设置作业超时时间,超时后将强制终止作业,但仍会保留已成功执行的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作业运行时将按照申请量占用包年包月的资源组资源,除此之外无单独费用。