Apache Beam I / O Transforms - PullRequest
       22

Apache Beam I / O Transforms

0 голосов
/ 15 октября 2018

Документация по Apache Beam Создание преобразований ввода-вывода - обзор состояния:

Чтение и запись данных в Beam - это параллельная задача, с использованием ParDos, GroupByKeys и т. Д.…обычно достаточно.В редких случаях вам понадобятся более специализированные классы Source и Sink для конкретных функций.

Может ли кто-нибудь представить очень простой пример того, как сделать это в Python?

Например, если бы у меня была локальная папка, содержащая 100 изображений JPEG, как бы я:

  1. Используйте ParDos для чтения / открытия файлов.
  2. Запустите произвольный код на изображениях (возможно, преобразуйте их в оттенки серого).
  3. Используйте ParDos для записиизмененные изображения в другой локальной папке.

Спасибо,

1 Ответ

0 голосов
/ 16 октября 2018

Вот пример конвейера https://github.com/apache/beam/blob/fc738ab9ac7fdbc8ac561e580b1a557b919437d0/sdks/python/apache_beam/examples/wordcount.py#L37

В вашем случае, сначала получите имена файлов, а затем читайте каждый файл по одному и записывайте вывод.Возможно, вы также захотите отправить имена файлов в группу, чтобы использовать распараллеливание, предоставляемое бегуном.Таким образом, в целом ваш конвейер может выглядеть примерно так: Чтение списка имен файлов -> Отправка имен файлов в Shuffle с использованием ключа GroupBy -> Получение по 1 имени файла за раз в пардо -> Чтение одного файла, обработка и запись в пардо

...