Beam Java Dataflow, Bigquery streaming insert GroupByKey сокращающие элементы - PullRequest
0 голосов
/ 26 мая 2020

Довольно новый для Dataflow / Apache Beam.

У меня есть конвейер, который читает сообщения из PubSub, эти сообщения содержат имя файла для файла в GCS. Они считываются из хранилища, строки таблицы создаются из отдельных файлов, а затем передаются в BigQuery. Проблема в том, что внутри шага потоковой вставки есть шаг GroupByKey, он принимает 20 819 элементов, но выдает значительно меньше элементов на 11 207 GroupByKey input and output

И мы наблюдаем 11 207 записей вставлено в BigQuery.

    .apply(String.format(Constants.STREAM_DATA, tableTagName),
BigQueryIO.writeTableRows().to(table).withExtendedErrorInfo().withoutValidation)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_NEVER)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND)
.withFailedInsertRetryPolicy(InsertRetryPolicy.retryTransientErrors()))

После чтения не видно, как «изменить» шаг, конвейер до этого момента обрабатывает записи «как ожидалось». Мы читаем сообщения из PubSub с атрибутом idAttribute, чтобы узнать, помогает ли это, но безрезультатно. В основном мы наблюдаем это, когда количество рабочих увеличивается и конвейер находится под нагрузкой, но не смогли понять, что вызывает это / как решить?

Любая помощь будет принята с благодарностью! Спасибо

...