【问题标题】:Executing certain steps only once the previous step is executed in the same pipeline in apache dataflow仅在 apache 数据流中的同一管道中执行上一步后才执行某些步骤
【发布时间】:2019-05-03 10:15:30
【问题描述】:

我想在几个开始步骤之后执行几个步骤。 例如:在我的情况下,我想执行开始 3 个步骤,然后执行最后 2 个步骤。

一旦这 3 个步骤完成执行,那么我想开始最后 2 个步骤。

with beam.Pipeline(options=pipeline_options) as p1:
    data_csv = p1 | 'Read CSV file' >> ReadFromText(known_args.input_csv_file)
    dict1 = (data_csv | 'Format to json' >> (beam.ParDo(Split())))
    (dict1 | 'Write to BigQuery' >> beam.io.WriteToBigQuery(
                                        known_args.output_stage_bq,
                                        schema=product_revenue_schema
                                        ))
    fullTable = (p1 | 'ReadFromBQ' >> beam.io.Read(beam.io.BigQuerySource(table_spec)))
    (fullTable | 'writeToBQ another dataset' >> beam.io.WriteToBigQuery(known_args.output_target_bq,
                            schema = product_revenue_schema))

预期:1:Step1 -> step2 -> step3 -> step4 -> step5

实际:1:Step1 -> Step2 -> Step3 2:第四步->第五步

【问题讨论】:

    标签: google-cloud-platform google-cloud-dataflow dataflow


    【解决方案1】:

    在 Beam Java SDK 中,Wait 转换是您正在寻找的。​​p>

    在 Beam Python SDK 中,目前没有此类转换可用。您应该使用两个单独的管道并手动同步它们(例如,在启动第二个管道之前等待第一个管道完成或从第一个管道发送 pubsub 消息以通知第二个管道写入完成)。

    【讨论】:

    • 谢谢@ihji,有一个疑问。 apache Beam 是否支持在 Python 中创建多个管道?
    猜你喜欢
    • 2018-12-20
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    相关资源
    最近更新 更多