У меня есть задание потока данных пакетного типа. Я читаю идентификаторы из файла 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.