Задание пакетного типа Google DataFlow застряло на шаге BigQueryIO.Write / StreamingInserts - PullRequest
0 голосов
/ 03 мая 2020

У меня есть задание потока данных пакетного типа. Я читаю идентификаторы из файла GCS, вызываю некоторые API для каждого идентификатора, API возвращает N элементов для каждого идентификатора. Затем я пытаюсь записать все эти элементы в таблицу BigQuery.

Процесс застревает с сообщением:

Processing stuck in step BigQueryIO.Write/StreamingInserts/StreamingWriteTables/Reshuffle/GroupByKey/Read for at least 05m00s without outputting or completing in state read-shuffle

Примечание: это происходит только тогда, когда я использую более 1 работника. С 1 работником все работает нормально.

ОБНОВЛЕНИЕ: Параметры для потока данных:

    DataflowPipelineOptions options = PipelineOptionsFactory.as(DataflowPipelineOptions.class);
    options.setRunner(DataflowRunner.class);
    options.setProject("my-project");
    options.setJobName("my-job");
    options.setRegion("us-east1");
    options.setWorkerMachineType("n1-standard-1");
    options.setNumWorkers(2);
    options.setMaxNumWorkers(2);
    options.setSubnetwork("some_subnetwork");
    options.setStagingLocation("gs://bla/staging");
    options.setGcpTempLocation("gs://bla/temp");

ОБНОВЛЕНИЕ 2: С 1 работником все отлично работает при небольшом количестве входных идентификаторов, потому что перестановка завершается успешно только после все объекты извлекаются. Если у меня много входных идентификаторов, перестановка застряла, ожидая, пока все предыдущие шаги завершатся sh.

...