Добавить зависимость между 2 Dofn в Apache Beam - PullRequest
2 голосов
/ 14 февраля 2020

Есть ли какой-нибудь способ, которым я могу создать зависимость между 2 Dofn, так что он будет ждать завершения первого метода Dofn, после чего будет запущен второй метод Dofn. Просто интересно, как мы можем достичь этого варианта использования.

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

Возможно, есть более чистый способ сделать это, но я заметил, что выполнение следующих действий даст желаемый эффект:

Направьте вывод первого DoFn на go на счетчик. и затем вывод этого счетчика будет передан в ParDo второго DoFn в качестве бокового входа

class DoFn2(apache_beam.DoFn):
    def process(self, element, count_do_fn_1_output, *args, **kwargs):
        # ...

do_fn_1_output = do_fn_1_input | 'do fn 1' >> apache_beam.ParDo(DoFn1())

count_do_fn_1_output = (
    do_fn_1_output 
    | 'count do_fn_1_output' >> apache_beam.combiners.Count.Globally())

do_fn_2_output = (
    do_fn_1_output 
    | 'do fn 2' >> apache_beam.ParDo(DoFn2(), count_do_fn_1_output=apache_beam.pvalue.AsSingleton(count_do_fn_1_output)))
0 голосов
/ 27 февраля 2020

Для Java SDK Я бы рекомендовал взглянуть на Wait transform. Это пример , похожий на то, чего вы хотите достичь, как я могу догадаться.

...