当前,保存点是通过在每次转换后将管道保存到csv文件中来创建的。 设置通常如下所示:
我通过拥有一个包装器转换对象来做到这一点,我可以向其提供转换功能和可选的保存点参数。 如果提供了保存点,则转换对象可以创建保存点:
class SavePointNode(beam.PTransform):
def __init__(self, transform, savepoint=None, **kwargs):
super(beam.PTransform, self).__init__(**kwargs)
self.transform = transform
self.savepoint = savepoint
def expand(self, p):
# transform data
result = p | beam.ParDo(self.transform)
# load to savepoint if available
if self.savepoint:
return result | beam.io.WriteToText(self.savepoint)
return result
我的第一个问题如下:
通过创建保存点,我希望能够通过不将每个步骤都追溯到保存点来在特定节点上重新启动管道以节省时间。 例如:如果在第三转换步骤中发生错误:
我希望能够从第二个转换步骤创建的保存点重新启动管道:
我对此有以下疑问: