Clickhouse Kafka тема присоединиться: - PullRequest
1 голос
/ 06 марта 2019

У меня две (и более) темы Кафки, и мне нужно присоединиться к ним. Мой вопрос из того, что я читаю в блогах / StackOverflow .... два варианта:

1) направить их обоих, Clickhouse Kafka engine / spark streaming, в отдельные таблицы, а затем запустить соединение, которое не рекомендуется в Clickhouse?

2) построить одну таблицу со всеми столбцами и использовать Clickhouse Engine / потоковое воспроизведение для обновления того же входа?

Любой совет

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Стандартный способ получить данные из Kafka в ClickHouse - создать исходную таблицу с представлением Engine = Kafka и Materialized, которая будет копировать данные в финальную таблицу с помощью механизма ReplicatedMergeTree.

Вы можете создать несколько материализованных представлений, которые будут записывать в одну целевую таблицу, вот так.


CREATE TABLE kafka_topic1 ( ... ) Engine=Kafka ...;

CREATE TABLE kafka_topic2 ( ... ) Engine=Kafka ...;

CREATE TABLE clickhouse_table ( ... ) Engine=MergeTree ...;

CREATE MATERIALIZED VIEW kafka_topic1_reader
  TO clickhouse_table
  AS SELECT * FROM kafka_topic1;

CREATE MATERIALIZED VIEW kafka_topic2_reader
  TO clickhouse_table
  AS SELECT * FROM kafka_topic2;
1 голос
/ 07 марта 2019

Как всегда, это действительно зависит от того, какие данные вы импортируете и как вы собираетесь их использовать, но я бы сказал, что в большинстве случаев лучше импортировать 2 темы в одну таблицу (так, вариант 2). Оттуда вы сможете быстро фильтровать и объединять записи. В зависимости от запросов, которые вы хотите выполнить, вы должны импортировать данные, используя соответствующие столбцы ORDER BY, что сделает ваши запросы намного быстрее.

Если вы дадите более подробную информацию о схеме данных, к которым хотите присоединиться, я могу быть более конкретным с ответом.

...