Условные итерации в потоке данных Google Cloud

Я изучаю возможности реализации алгоритма анализа данных с помощью Google Cloud Dataflow. Имейте в виду, у меня еще нет опыта работы с потоками данных. Я просто изучаю, может ли он удовлетворить мои потребности.

Часть моего алгоритма содержит несколько условных итераций, то есть продолжается до тех пор, пока не будет выполнено какое-либо условие:

PCollection data  = ...
while(needsMoreWork(data)) {
  data = doAStep(data)
}

Я просмотрел документацию и, насколько я могу судить, могу выполнять «итерации» только в том случае, если я знаю точное количество итераций до запуска конвейера. В этом случае мой код построения конвейера может просто создать последовательный конвейер с фиксированным числом шагов.

Единственное «решение», которое я могу придумать, - это запускать каждую итерацию в отдельных конвейерах, сохранять промежуточные данные в некоторой базе данных, а затем решать в моей конструкции конвейера, запускать ли новый конвейер для следующей итерации. Это кажется крайне неэффективным решением!

Есть ли какие-нибудь хорошие способы выполнить такие дополнительные итерации в потоке данных в облаке Google?

Спасибо!


person Tobber    schedule 27.07.2015    source источник


Ответы (1)


На данный момент оба упомянутых вами варианта разумны. Вы даже можете комбинировать два подхода. Создайте конвейер, который выполняет несколько итераций (становится бездействующим, если needsMoreWork ложно), а затем создайте основную программу Java, которая отправляет этот конвейер несколько раз, пока needsMoreWork не станет ложным.

Мы видели этот вариант использования несколько раз и надеемся решить его в будущем. Встроенная поддержка отслеживается в https://github.com/GoogleCloudPlatform/DataflowJavaSDK/issues/50.

person Ben Chambers    schedule 27.07.2015
comment
Спасибо. Есть ли где-нибудь, где я могу следить за прогрессом в этом вопросе? Как трекер ошибок или что-то подобное? - person Tobber; 27.07.2015