Кафка в Google Cloud Platform Прием данных - PullRequest
0 голосов
/ 07 января 2019

Каковы возможные варианты того, что данные Kafka из тем могут быть переданы, использованы и загружены в хранилище BigQuery / Cloud.

Согласно возможно ли использовать Kafka с облаком Google Dataflow

GCP поставляется с Dataflow, который построен на основе модели программирования Apache Beam. Является ли использование KafkaIO с Beam Pipeline рекомендуемым способом для преобразования входящих данных в режиме реального времени?

https://beam.apache.org/releases/javadoc/2.5.0/org/apache/beam/sdk/io/kafka/KafkaIO.html

Данные Kafka можно отправить в облачный pub-sub, а затем в таблицу BigQuery. Также можно использовать работу Kafka streams / Spark, которая будет находиться вне GCP.

Какие факторы следует учитывать при принятии решения о проектировании, если данные полностью размещены на Google Cloud Platform (GCP)?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вы можете использовать Kafka Connect и разъемы BigQuery или GCS .

С точки зрения трансформации вас может заинтересовать KSQL (который построен на Kafka Streams), а также освещен в того же блога .

Отказ от ответственности: я работаю на Confluent и написал некоторые из вышеуказанных материалов.

0 голосов
/ 08 января 2019

Поддержка 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 .

...