Что такое способ Apache Beam для обработки «маршрутизации» - PullRequest
0 голосов
/ 08 ноября 2018

Используя Apache Beam, я делаю вычисления - и если они получатся успешными, я бы хотел записать вывод в один приемник, а в случае сбоя я бы хотел записать это в другой приемник.

Есть ли способ обработки метаданных или контентной маршрутизации в Apache Beam?

Я широко использовал Apache Camel, и поэтому, основываясь на результатах предыдущего преобразования, я должен направить сообщение в другой приемник, используя router (возможно, определяется флагом метаданных Я установил на заголовок сообщения). Есть ли аналогичная возможность с Apache Beam, или вместо этого у меня было бы просто последовательное преобразование, которое проверяет PCollection и обрабатывает запись в приемники внутри преобразования?

В идеале я хотел бы, чтобы эта логика (написана для большей ясности)

result = my_pcollections | 'compute_stuff' >> beam.Map(lambda (pcollection): my_compute_func(pcollection))
result | ([success_failure_router]
   | 'sucess_sink' >> beam.io.WriteToText('/path/to/file')
   | 'failure_sink' >> beam.io.WriteStringsToPubSub('mytopic'))

Однако .. Я подозреваю, что способ обработки луча - это

result = my_pcollections | 'compute_stuff' >> beam.Map(lambda (pcollection): my_compute_func(pcollection))
result | 'write_results_appropriately' >> write_results_appropriately(result))
...
def write_results_appropriately(result):
   if result == ..:
      # success, write to file
   else:
      # failure, write to topic

Спасибо, Kevin

1 Ответ

0 голосов
/ 08 ноября 2018

Высокий уровень:

Я не уверен в специфике Python API в этом случае, но на высоком уровне это выглядит так:

  • par-dos поддерживает несколько выходов;
  • выходы идентифицируются тегом, который вы им даете (например, "правильные элементы", "недействительные элементы");
  • в вашем основном параметревы пишете в несколько выходов, выбирая выходные данные, используя ваши критерии;
  • каждый выход представлен отдельным PCollection;
  • , затем вы получаете отдельный PCollections, представляющий помеченные выходы из вашего списка-do;
  • затем применить различные приемники к каждому тегу PCollections;

Подробно см. раздел https://beam.apache.org/documentation/programming-guide/#additional-outputs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...