2016-12-18 3 views
0

Так что у меня немного проблема с концепциями Dataflow. Особенно в отношении того, как трубопроводы должны быть структурированы.Google Cloud Dataflow потребляет внешний источник

Я пытаюсь использовать внешний API, который предоставляет XML-файл индекса со ссылками на отдельные файлы XML. Как только у меня будет содержимое всех XML-файлов, мне нужно разбить их на отдельные PCollections, чтобы можно было выполнить дополнительные PTransform.

Трудно обернуть голову тем фактом, что первый XML-файл необходимо загрузить и прочитать, прежде чем XML-файл продукта можно будет загрузить и прочитать. Как указано в документации, конвейер начинается с источника и заканчивается с помощью раковины.

Так что мои вопросы:

  • Является DataFlow даже правильный инструмент для такого рода задачи?
  • Является ли обычным источником, предназначенным для включения всего этого процесса, или он должен выполняться отдельными шагами/конвейерами?
  • Можно ли обрабатывать это в конвейере и позволить другому конвейеру читать файлы?
  • Как бы выглядел высокоуровневый обзор этого процесса?

Замечания: Я использую SDK Python для этого, но это, вероятно, не имеет особого значения, так как это более архитектурная проблема.

ответ

2

Да, это абсолютно невозможно. Прямо сейчас, это немного klutzy в начале, но предстоящая работа над новым примитивом SplittableDoFn должна сделать этот шаблон намного проще в будущем.

  1. Начните с использования Create, чтобы сделать фиктивный PCollection с помощью одного элемента.
  2. Обработать этот PCollection с помощью DoFn, который загружает файл, считывает подфайлы и испускает их.
  3. [Дополнительно] На данный момент вы, вероятно, захотите, чтобы работа продолжалась параллельно. Чтобы система могла легко распараллеливаться, вы захотите сделать семантически ненужный GroupByKey, за которым следует ParDo, чтобы «отменить» группировку. Это материализует эти имена файлов во временное хранилище, позволяя системе иметь разных рабочих, обрабатывающих каждый элемент.
  4. Обработайте каждый подфайл, прочитав его содержимое и исправьте в PCollections. Если вы хотите, чтобы разные файлы были обработаны по-разному, используйте раздел, чтобы отсортировать их в разных разделах PCollections.
  5. Сделайте соответствующую обработку.
+0

Благодарим за очень четкий ответ! Гораздо проще, чем я думал. – selectle