Как я могу профилировать работу потока данных Python? - PullRequest
1 голос
/ 08 июля 2019

Я написал задание Python Dataflow для обработки некоторых данных:

pipeline
| "read" >> beam.io.ReadFromText(known_args.input)  # 9 min 44 sec
| "parse_line" >> beam.Map(parse_line)  # 4 min 55 sec
| "add_key" >> beam.Map(add_key)  # 48 sec
| "group_by_key" >> beam.GroupByKey()  # 11 min 56 sec
| "map_values" >> beam.ParDo(MapValuesFn())  # 11 min 40 sec
| "json_encode" >> beam.Map(json.dumps)  # 26 sec
| "output" >> beam.io.textio.WriteToText(known_args.output)  # 22 sec

(я удалил специфичный для бизнеса язык.)

Входные данные сжаты в 1.36 GiB gz-gzCSV, но для выполнения задания требуется 37 минут 34 секунды (я использую Dataflow, поскольку ожидаю, что размер ввода быстро увеличится).

Как определить узкие места в конвейере и ускорить егоисполнение?Ни одна из отдельных функций не требует больших вычислительных затрат.

Автоматическое масштабирование информации из консоли потока данных:

12:00:35 PM     Starting a pool of 1 workers. 
12:05:02 PM     Autoscaling: Raised the number of workers to 2 based on the rate of progress in the currently running step(s).
12:10:02 PM     Autoscaling: Reduced the number of workers to 1 based on the rate of progress in the currently running step(s).
12:29:09 PM     Autoscaling: Raised the number of workers to 3 based on the rate of progress in the currently running step(s).
12:35:10 PM     Stopping worker pool.

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

Случайно я обнаружил, что проблема в этом случае заключалась в сжатии CSV.

Ввод был однократный сжатый gz CSV. Чтобы мне было проще просматривать данные, я переключился на несжатый CSV. Это сократило время обработки до 17 минут, а автоматическое масштабирование Dataflow достигло 10 рабочих.

(Если бы мне все еще требовалось сжатие, я бы разбил CSV на части, а затем сжал каждую по отдельности.)

0 голосов
/ 08 июля 2019

Я искал dev@beam.apache.org и обнаружил, что существует тема, обсуждающая эту тему: https://lists.apache.org/thread.html/f8488faede96c65906216c6b4bc521385abeddc1578c99b85937d2f2@%3Cdev.beam.apache.org%3E

Вы можете проверить эту ветку на полезную информацию и / или поднять вопросы / требования / обсуждения, если есть необходимость.

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