数据流管道完成后如何执行一组操作?

时间:2019-08-22 11:13:56

标签: callback google-cloud-dataflow pipeline apache-beam

一旦完成DataFlow样条线,是否可以获取回调? 管道完成后,我必须对系统进行一些配置更改,以使用管道生成的新Output和其他一些清理操作。 现在,我实际上是在使用public function receivingSheetOfStationwise($data){ extract($data); $this->db->select('*'); $this->db->from('bilty'); $this->db->where('lr_to',$station); $this->db->where('status', 'active'); $this->db->order_by('b.lr_no','asc'); $query=$this->db->get(); return $query->result(); } 函数来暂停程序流,然后进行配置更改。因此,当测试在本地系统中运行时,它会暂停开发人员的命令提示符,否则用户必须等待管道完成。

那么有更好的方法吗?像回调机制一样?

3 个答案:

答案 0 :(得分:0)

开箱即用的数据流中没有回调注册表。

但是,您可以在stackdriver上设置自定义警报,该警报可以在管道完成后向您发出警报。

答案 1 :(得分:0)

Apache Beam提供了 Stop Bundle Teardown 方法以及您可能会用来执行任务的其他生命周期方法。

答案 2 :(得分:0)

在最终转换中,我向自己发送了一个http请求:

import requests
def on_complete(callback_url):
    def _on_complete(element):
        r = requests.post(callback_url)
        if r.status_code != 200:
            # handle error
return _on_complete

管道代码:

_ = (p
     # ... my other transforms
     | 'count outputs' >> apache_beam.combiners.Count.Globally()
     | 'on complete' >> apache_beam.Map(on_complete(callback_url)))

我做'count outputs'以确保'on complete'仅收到一个元素

相关问题