为了解释我的问题,让我先给一些背景:我目前正在开发一个数据管道,其中有许多不同的步骤。每个步骤都可能出现问题,并且许多步骤需要一定时间(并非很长,但大约需要几分钟)。
因此,目前该管道在很大程度上由人员监督。分析师会逐步执行每个步骤,在Jupyter笔记本中运行Python代码,当遇到问题时,会进行少量的代码调整并重复执行该部分。
从长远来看,这里的目标是实现零人为干预。然而,在较短期内,我们希望使这个过程更加无缝。最简单的方法似乎是将每个部分拆分成自己的脚本,并有一个父脚本来运行每个部分并验证输出。但是,如果失败了,我们还需要能够重复运行具有相同设置的文件。
例如:
最明显的方法是将每个脚本的输出写入文件,并将所有这些脚本加载到下一个脚本中。这种方法可以行得通,但似乎有些不太优雅。数据库似乎是另一个有效的选择,但很多数据并不适合清晰地放入数据库格式中。
是否有人有任何建议可以实现我所寻求的目标?如果有任何不清楚的地方,我也非常乐意澄清任何问题!
因此,目前该管道在很大程度上由人员监督。分析师会逐步执行每个步骤,在Jupyter笔记本中运行Python代码,当遇到问题时,会进行少量的代码调整并重复执行该部分。
从长远来看,这里的目标是实现零人为干预。然而,在较短期内,我们希望使这个过程更加无缝。最简单的方法似乎是将每个部分拆分成自己的脚本,并有一个父脚本来运行每个部分并验证输出。但是,如果失败了,我们还需要能够重复运行具有相同设置的文件。
例如:
run a --> ✅
run b --> ✅ (b relies on some data produced by a)
run c --> ❌ (c relies on data produced by a and b)
// make some changes to c
run c --> ✅ (c should run in an identical state to its original run)
最明显的方法是将每个脚本的输出写入文件,并将所有这些脚本加载到下一个脚本中。这种方法可以行得通,但似乎有些不太优雅。数据库似乎是另一个有效的选择,但很多数据并不适合清晰地放入数据库格式中。
是否有人有任何建议可以实现我所寻求的目标?如果有任何不清楚的地方,我也非常乐意澄清任何问题!