https://issues.apache.org/jira/browse/BEAM-3198

таемся написать в Big Query, используя Apache Beam и avro.

Следующее, кажется, работает нормально:

p.apply("Input", AvroIO.read(DataStructure.class).from("AvroSampleFile.avro"))
            .apply("Transform", ParDo.of(new CustomTransformFunction()))
            .apply("Load", BigQueryIO.writeTableRows().to(table).withSchema(schema));

Затем мы попытались использовать его следующим образом для получения данных из Google Pub / Sub

p.begin()
            .apply("Input", PubsubIO.readAvros(DataStructure.class).fromTopic("topicName"))
            .apply("Transform", ParDo.of(new CustomTransformFunction()))
            .apply("Write", BigQueryIO.writeTableRows()
                    .to(table)
                    .withSchema(schema)
                    .withTimePartitioning(timePartitioning)
                    .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED)
                    .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND));
        p.run().waitUntilFinish();

Когда мы делаем это, он всегда выталкивает его в буфер, и кажется, что Big Query требует много времени для чтения из буфера. Может кто-нибудь сказать мне, почему вышесказанное не будет записывать записи непосредственно в таблицы Big Query?

ОБНОВЛЕНИЕ: - Похоже, мне нужно добавить следующие параметры, но это вызывает исключение java.lang.IllegalArgumentException.

.withMethod(Method.FILE_LOADS)
.withTriggeringFrequency(org.joda.time.Duration.standardMinutes(2))

Ответы на вопрос(1)

Ваш ответ на вопрос