Skip to main content
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.
Nos exemplos, usamos a distribuição Confluent do Kafka Connect. A seguir, descrevemos uma instalação simples, extraindo mensagens de um único tópico do Kafka e inserindo linhas em uma tabela do ClickHouse. Recomendamos o Confluent Cloud, que oferece um nível gratuito generoso para quem não tem um ambiente Kafka. Observe que um esquema é necessário para o JDBC Connector (não é possível usar JSON ou CSV simples com o conector JDBC). Embora o esquema possa ser codificado em cada mensagem, é altamente recomendável usar o registro de esquemas do Confluent para evitar a sobrecarga associada. O script de inserção fornecido infere automaticamente um esquema a partir das mensagens e o insere no registry; assim, esse script também pode ser reutilizado para outros datasets. Pressupõe-se que as keys do Kafka sejam Strings. Mais detalhes sobre esquemas do Kafka podem ser encontrados aqui.

Licença

O JDBC Connector é distribuído sob a Licença Comunitária da Confluent

Etapas

Reúna as informações da conexão

Para se conectar ao ClickHouse via HTTP(S), você precisa das seguintes informações: 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:
botão Connect do serviço do ClickHouse Cloud
Escolha HTTPS. Os detalhes de conexão são exibidos em um comando curl de exemplo.
detalhes de conexão HTTPS do ClickHouse Cloud
Se você estiver usando ClickHouse autogerenciado, os detalhes de conexão são definidos pelo administrador do seu ClickHouse.
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 formato jdbc:clickhouse://&lt;clickhouse host>:&lt;clickhouse http port>/&lt;target database>
  • connection.user - um usuário com acesso de gravação ao banco de dados de destino
  • table.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 como org.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.
Se estiver usando nosso dataset de exemplo para testes, certifique-se de definir o seguinte:
  • 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âmetro value.converter.schema.registry.basic.auth.user.info.
Arquivos de configuração de exemplo para os dados de amostra do GitHub podem ser encontrados aqui, considerando que o Connect está sendo executado no modo standalone e que o Kafka está hospedado no Confluent Cloud.
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.
Última modificação em 23 de julho de 2026