Поддержка Kafka была добавлена в Apache Beam в 2016 году с набором преобразований KafkaIO . Это означает, что Dataflow также поддерживает это.
Для загрузки данных в BigQuery проще всего было бы использовать конвейер Apache Beam, работающий в Dataflow. Ваш конвейер будет выглядеть примерно так:
Pipeline p = Pipeline.create();
p.apply("ReadFromKafka", KafkaIO.read()
.withTopic(myTopic)...)
.apply("TransformData", ParDo.of(new FormatKafkaDataToBigQueryTableRow(mySchema))
.apply(BigQueryIO.writeTableRows()
.to(myTableName)
.withSchema(mySchema));
p.run().waitUntilFinish();
Преимущества использования конвейера Beam в потоке данных состоят в том, что вам не нужно управлять смещениями, состоянием и согласованностью чтения данных (по сравнению с пользовательским процессом, который читает из Kafka-> BQ); ни кластер (по сравнению с работой Spark).
Наконец, вот пример конвейера с использованием KafkaIO .