Как лучше всего увидеть, как Dataflow выполняет оптимизацию Fusion? - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь оптимизировать конвейер, который извлекает сообщения из PubSubIO и отправляет эти сообщения стороннему API. У меня есть одно интересное наблюдение: если после PubSubIO.read поместить преобразование GroupBy и преобразование "Дегруппа", пропускная способность конвейера значительно возрастет. Я добавил GroupBy просто для предотвращения оптимизации слияния, и теперь мне интересно, как именно преобразование объединяется в данном конвейере.

Как лучше всего узнать, как выглядит трубопровод после сварки?

1 Ответ

0 голосов
/ 31 августа 2018

Вы можете получить доступ к оптимизированному графику и объединенным этапам, либо позвонив по номеру project.locations.jobs.get , либо через gcloud, выполнив следующую команду:

gcloud dataflow jobs describe --full $JOB_ID --format json

Исходя из ответа, слитые ступени будут описаны в объекте ExecutionStageSummary в массиве ComponentTransform . Ниже приведен пример вывода шаблона Cloud Pub / Sub для BigQuery предоставленного Google шаблона. В этом случае мы можем видеть, что график был объединен в 3 шага, в значительной степени очерченных шагом Reshuffle в приемнике BigQueryIO :

  1. S03 - Все преобразования до Reshuffle в WriteSuccessfulRecords и WriteFailedRecords
  2. S02 - Все преобразования после Reshuffle в WriteSuccessfulRecords
  3. S01 - Все преобразования после Reshuffle in WriteFailedRecords

Полный вывод

Job Description

Поскольку описание задания довольно многословно, вы можете подумать о том, чтобы передать вывод в jq, чтобы легко извлечь соответствующие биты в однострочной команде, например ниже:

gcloud dataflow jobs describe --full $JOB_ID --format json | jq '.pipelineDescription.executionPipelineStage[] | {"stage_id": .id, "stage_name": .name, "fused_steps": .componentTransform }'
...