Este conector JDBC só deve ser usado se os seus dados forem simples e consistirem em tipos de dados primitivos, como int. Tipos específicos do ClickHouse, como maps, não são compatíveis.
Licença
Etapas
Reúna as informações da conexão
Os detalhes do seu serviço do ClickHouse Cloud estão disponíveis no console do ClickHouse Cloud.
Selecione um serviço e clique em Connect:

curl de exemplo.

1
Instale o Kafka Connect e o conector
Partimos do pressuposto de que você baixou o pacote da Confluent e o instalou localmente. Siga as instruções de instalação para instalar o conector, conforme documentado aqui.Se você usar o método de instalação
confluent-hub, seus arquivos de configuração locais serão atualizados.Para enviar dados ao ClickHouse a partir do Kafka, usamos o componente Sink do conector.2
Baixe e instale o driver JDBC
Baixe e instale o driver JDBC do ClickHouse
clickhouse-jdbc-<version>-shaded.jar aqui. Instale-o no Kafka Connect seguindo as instruções aqui. Outros drivers podem funcionar, mas não foram testados.Problema comum: a documentação sugere copiar o arquivo jar para
share/java/kafka-connect-jdbc/. Se você tiver problemas para o Connect localizar o driver, copie-o para share/confluent-hub-components/confluentinc-kafka-connect-jdbc/lib/. Ou modifique plugin.path para incluir o driver - veja abaixo.3
Prepare a configuração
Siga estas instruções para configurar uma instância do Connect adequada ao seu tipo de instalação, observando as diferenças entre um cluster standalone e um distribuído. Se estiver usando o Confluent Cloud, a configuração distribuída é a mais apropriada.Os parâmetros a seguir são relevantes para usar o conector JDBC com o ClickHouse. Uma lista completa de parâmetros pode ser encontrada aqui:
_connection.url_- deve ter o formatojdbc:clickhouse://<clickhouse host>:<clickhouse http port>/<target database>connection.user- um usuário com acesso de gravação ao banco de dados de destinotable.name.format- tabela do ClickHouse na qual inserir os dados. Ela deve existir.batch.size- O número de linhas a serem enviadas em um único batch. Certifique-se de definir um valor adequadamente alto. De acordo com as recomendações do ClickHouse, o valor mínimo deve ser 1000.tasks.max- O conector JDBC Sink oferece suporte à execução de uma ou mais tasks. Isso pode ser usado para aumentar o desempenho. Junto com o tamanho do batch, esse é o principal meio de melhorar o desempenho.value.converter.schemas.enable- Defina como false se estiver usando um registro de esquemas, true se estiver incorporando os esquemas nas mensagens.value.converter- Defina de acordo com o tipo de dado; por exemplo, para JSON,io.confluent.connect.json.JsonSchemaConverter.key.converter- Defina comoorg.apache.kafka.connect.storage.StringConverter. Utilizamos chaves String.pk.mode- Não é relevante para o ClickHouse. Defina como none.auto.create- Não é compatível e deve ser false.auto.evolve- Recomendamos false para essa configuração, embora ela possa vir a ser compatível no futuro.insert.mode- Defina como “insert”. Outros modos não são compatíveis no momento.key.converter- Defina de acordo com os tipos das suas chaves.value.converter- Defina com base no tipo de dados no seu topic. Esses dados devem ter um esquema compatível: formatos JSON, Avro ou Protobuf.
value.converter.schemas.enable- Defina como false, pois utilizamos um registro de esquemas. Defina como true se estiver incorporando o esquema em cada mensagem.key.converter- Defina como “org.apache.kafka.connect.storage.StringConverter”. Utilizamos chaves String.value.converter- Defina como “io.confluent.connect.json.JsonSchemaConverter”.value.converter.schema.registry.url- Defina a URL do servidor de esquema, junto com as credenciais do servidor de esquema, por meio do parâmetrovalue.converter.schema.registry.basic.auth.user.info.
4
Crie a tabela do ClickHouse
Certifique-se de que a tabela foi criada, removendo-a se já existir de exemplos anteriores. Um exemplo compatível com o conjunto de dados reduzido do GitHub é mostrado abaixo. Observe a ausência de quaisquer tipos Array ou Map que atualmente não são compatíveis:
5
Inicie o Kafka Connect
Inicie o Kafka Connect em modo standalone ou distribuído.
6
Adicionar dados ao Kafka
Insira mensagens no Kafka usando o script e config fornecidos. Você precisará modificar o arquivo github.config para incluir suas credenciais do Kafka. No momento, o script está configurado para uso com o Confluent Cloud.Este script pode ser usado para inserir qualquer arquivo ndjson em um topic do Kafka. Ele tentará inferir automaticamente um esquema para você. A configuração de exemplo fornecida inserirá apenas 10 mil mensagens - modifique aqui se necessário. Essa configuração também remove quaisquer campos Array incompatíveis do dataset durante a inserção no Kafka.Isso é necessário para que o conector JDBC converta mensagens em instruções INSERT. Se você estiver usando seus próprios dados, certifique-se de inserir um esquema em cada mensagem (definindo _value.converter.schemas.enable _como true) ou garanta que seu client publique mensagens que façam referência a um esquema no registry.O Kafka Connect deve começar a consumir mensagens e a inserir linhas no ClickHouse. Observe que avisos sobre “[JDBC Compliant Mode] Transaction isn’t supported.” são esperados e podem ser ignorados.Uma leitura simples na tabela de destino “Github” deve confirmar a inserção dos dados.
Leitura complementar recomendada
- Parâmetros de configuração do sink do Kafka
- Análise aprofundada do Kafka Connect – Conector de origem JDBC
- Análise aprofundada do JDBC Sink do Kafka Connect: trabalhando com chaves primárias
- Kafka Connect em ação: JDBC Sink - para quem prefere assistir em vez de ler.
- Análise aprofundada do Kafka Connect – Conversores e serialização explicados