调度创建的RunConfig:重运行行为及配置分区取舍
问题描述
假设我使用@schedule装饰器,按如下方式创建带有RunConfig和分区的RunRequest:
class MyAssetConfig(Config): x: str y: str @schedule(...) def some_scheduler(context: ScheduleEvaluationContext): my_asset_config = MyAssetConfig(x="xxxx", y="yyyy") run_config = RunConfig(ops={"asset1": my_asset_config}) yield RunRequest(run_key="abc", partition_key="abc", run_config=run_config)
现在该任务已调度,之后我因某些原因需要重运行某个分区。对应的资产代码会携带partition_key,但RunConfig会如何处理?重运行分区时我是否需要手动重新提供x和y的值?原运行时使用的x、y值会丢失,还是可以轻松复用之前的RunConfig?
我真正关心的是:有多少类分区信息可以放在配置中,又有多少这类信息需要放在分区本身,才能保留重运行能力?
回答
重运行时RunConfig的处理逻辑
原运行时的RunConfig会被Dagster完整存储在运行记录中,重运行该分区时不需要手动重新提供x和y的值,系统会自动复用之前的配置。除非你在重运行时主动指定新的RunConfig,否则默认会沿用原运行的配置参数。
配置与分区信息的划分原则
适合放在
partition_key中的信息:- 和分区核心维度强绑定的标识(比如日期、地域编码、业务线ID),这类信息是区分不同分区的核心依据,会被Dagster的分区调度系统追踪,用于自动生成调度计划、资产血缘管理、分区状态统计。
- 这类信息通常是固定的分区维度,不会随单次运行变化。
适合放在
RunConfig中的信息:- 该分区单次运行的专属参数(比如你的
x和y)、环境配置、依赖资源的参数等,这些是和具体运行实例绑定的配置,不需要作为分区维度,但需要和运行记录关联以支持重运行复用。 - 如果某个参数是同分区所有运行都固定的,也可以将其配置为资产的默认参数,或者从环境变量/配置文件中动态读取,这样调度和重运行都会自动加载,无需每次在Schedule中手动构造。
- 该分区单次运行的专属参数(比如你的
内容的提问来源于stack exchange,提问作者Stephen
相关产品推荐
相关产品推荐

