Как реализовать настройки управления потоком в PubSubIO в конвейере потока данных - PullRequest
0 голосов
/ 25 марта 2020

В нашем приложении мы читаем данные из PubSub, используя PubsubIO, в конвейере потока данных. Ниже приведен код.

  PCollection<String> pubsubMsg = pipeline
                .apply(PubsubIO.readStrings().fromSubscription(options.getInputSubscription1()))
    PCollection<String> groupByBigqueryResult = pubsubMsg.apply("Read from bigquery table",
            ParDo.of(new ReadRawdataFromBiqueryTable()));           

Но когда мы присоединяем чтение BigQuery к этому конвейеру, так как чтение BigQuery идет медленно, так как мы делаем это в ParDo, кажется, что в SubScriber PubSub реализованы некоторые настройки управления потоком по умолчанию следовательно, я вижу, что скорость потока сообщений PubSub очень низкая, но если я закомментирую реализацию чтения BigQuery, выполненную в ReadRawdataFromBiqueryTable, то она будет быстрой. Как переопределить настройки управления потоком. Приложены оба задания потока данных 1. с большим запросом чтения PubSub flow rate is slow due to slow bigquery read 2. закомментировал bigquery читать часть Big Query Read Commented out

1 Ответ

1 голос
/ 25 марта 2020

Я подозреваю, что здесь происходит то, что конвейер работает медленно из-за медленного ParDo, а не явного управления потоком из Dataflow или PubSubIO. Поток данных (и Beam в целом) считывает данные в конвейере, и каждый элемент данных проходит через этот конвейер (иногда буферизуется). Так что в этом случае PubSubIO не будет читать данные, если следующий следующий шаг (ParDo, который читает из BigQuery, работает медленно). Я предлагаю прочитать следующее, чтобы узнать больше о модели программирования Beam.

https://beam.apache.org/documentation/programming-guide/

Одним из способов ускорения может быть попытка уменьшить количество считываемых данных из BigQuery путем буферизации нескольких элементов и каким-либо образом пытаясь уменьшить количество запросов, отправляемых в BigQuery (или реструктурировать конвейер каким-либо другим способом).

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