Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Conectar o Apache NiFi ao ClickHouse

Mantido pela comunidade

Apache NiFi é um software de código aberto para gerenciamento de fluxos de trabalho, projetado para automatizar o fluxo de dados entre sistemas de software. Ele permite criar pipelines de dados de ETL e vem com mais de 300 processadores de dados. Este tutorial passo a passo mostra como conectar o Apache NiFi ao ClickHouse tanto como origem quanto como destino e como carregar um conjunto de dados de exemplo.

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

Para se conectar ao ClickHouse via HTTP(S), você precisa das seguintes informações:

Parâmetro(s) Descrição
HOST and PORT Normalmente, a porta é 8443 ao usar TLS ou 8123 quando não se usa TLS.
DATABASE NAME Por padrão, há um banco de dados chamado default; use o nome do banco de dados ao qual você deseja se conectar.
USERNAME and PASSWORD Por padrão, o nome de usuário é default. Use o nome de usuário apropriado para o seu caso de uso.

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.

Baixe e execute o Apache NiFi

Para uma nova instalação, baixe o binário em https://nifi.apache.org/download.html e inicie executando ./bin/nifi.sh start

Baixe o driver JDBC do ClickHouse

  1. Acesse a página de releases do driver JDBC do ClickHouse no GitHub e procure a versão mais recente do JDBC
  2. Na release, clique em "Show all xx assets" e procure o arquivo JAR que contenha a palavra-chave "shaded" ou "all", por exemplo, clickhouse-jdbc-0.5.0-all.jar
  3. Coloque o arquivo JAR em uma pasta acessível ao Apache NiFi e anote o caminho absoluto

[object Object]

  1. Para configurar um Controller Service no Apache NiFi, acesse a página NiFi Flow Configuration clicando no botão de "engrenagem"

    Página NiFi Flow Configuration com o botão de engrenagem destacado
  2. Selecione a aba Controller Services e adicione um novo Controller Service clicando no botão + no canto superior direito

    Aba Controller Services com o botão de adicionar destacado
  3. Procure por DBCPConnectionPool e clique no botão "Add"

    Caixa de diálogo de seleção de Controller Service com DBCPConnectionPool destacado
  4. O DBCPConnectionPool recém-adicionado ficará no estado Invalid por padrão. Clique no botão de "engrenagem" para iniciar a configuração

    Lista de Controller Services mostrando o DBCPConnectionPool inválido com o botão de engrenagem destacado
  5. Na seção "Properties", insira os seguintes valores

Propriedade Valor Observação
URL de conexão com o banco de dados jdbchttps://HOSTNAME:8443/default?ssl=truetrue Substitua HOSTNAME na URL de conexão conforme necessário
Nome da classe do driver do banco de dados com.clickhouse.jdbc.ClickHouseDriver
Localizações do driver do banco de dados /etc/nifi/nifi-X.XX.X/lib/clickhouse-jdbc-0.X.X-patchXX-shaded.jar Caminho absoluto para o arquivo JAR do driver JDBC do ClickHouse
Usuário do banco de dados default Nome de usuário do ClickHouse
Senha password Senha do ClickHouse
  1. Na seção Settings, altere o nome do Controller Service para "ClickHouse JDBC" para facilitar a identificação

    Caixa de diálogo de configuração do DBCPConnectionPool mostrando as propriedades preenchidas
  2. Ative o Controller Service DBCPConnectionPool clicando no botão de "raio" e depois no botão "Enable"

    Lista de Controller Services com o botão de raio destacado

    Caixa de diálogo de confirmação para ativar o Controller Service
  3. Verifique a aba Controller Services e confirme que o Controller Service está ativado

    Lista de Controller Services mostrando o serviço ClickHouse JDBC ativado

[object Object]

  1. Adicione um processador ExecuteSQL, junto com os processadores upstream e downstream apropriados

    Canvas do NiFi mostrando o processador ExecuteSQL em um fluxo de trabalho
  2. Na seção "Properties" do processador ExecuteSQL, insira os seguintes valores

    Propriedade Valor Observação
    Serviço de pool de conexões com o banco de dados ClickHouse JDBC Selecione o Controller Service configurado para o ClickHouse
    consulta SQL SELECT SELECT * FROM system.metrics Insira sua consulta aqui
  3. Inicie o processador ExecuteSQL

    Configuração do processador ExecuteSQL com as propriedades preenchidas
  4. Para confirmar que a consulta foi processada com sucesso, inspecione um dos FlowFile na fila de saída

    Caixa de diálogo de listagem da fila mostrando FlowFiles prontos para inspeção
  5. Mude a visualização para "formatted" para ver o resultado do FlowFile de saída

    Visualizador de conteúdo do FlowFile mostrando os resultados da consulta na visualização formatada

[object Object]

  1. Para gravar várias linhas em um único insert, primeiro é necessário mesclar vários registros em um único registro. Isso pode ser feito usando o processador MergeRecord

  2. Na seção "Properties" do processador MergeRecord, insira os seguintes valores

    Property Value Remark
    Leitor de registros JSONTreeReader Selecione o leitor de registros apropriado
    Gravador de registros JSONReadSetWriter Selecione o gravador de registros apropriado
    Número mínimo de registros 1000 Altere para um número maior para que o número mínimo de linhas seja mesclado em um único registro. O padrão é 1 linha
    Número máximo de registros 10000 Altere para um número maior que "Número mínimo de registros". O padrão é 1.000 linhas
  3. Para confirmar que vários registros foram mesclados em um só, examine a entrada e a saída do processador MergeRecord. Observe que a saída é um array com vários registros de entrada

    Entrada

    Entrada do processador MergeRecord mostrando registros individuais

    Saída

    Saída do processador MergeRecord mostrando array mesclado de registros
  4. Na seção "Properties" do processador PutDatabaseRecord, insira os seguintes valores

    Property Value Remark
    Leitor de registros JSONTreeReader Selecione o leitor de registros apropriado
    Tipo de banco de dados Generic Mantenha o valor padrão
    Tipo de instrução INSERT
    Serviço de pool de conexões do banco de dados ClickHouse JDBC Selecione o serviço de controlador do ClickHouse
    Nome da tabela tbl Insira aqui o nome da sua tabela
    Traduzir nomes de campos false Defina como "false" para que os nomes dos campos inseridos correspondam ao nome da coluna
    Tamanho máximo do lote 1000 Número máximo de linhas por insert. Esse valor não deve ser menor que o valor de "Número mínimo de registros" no processador MergeRecord
  5. Para confirmar que cada insert contém várias linhas, verifique se a contagem de linhas na tabela está aumentando em pelo menos o valor de "Número mínimo de registros" definido em MergeRecord.

    Resultados da consulta mostrando a contagem de linhas na tabela de destino
  6. Parabéns - você carregou seus dados no ClickHouse com sucesso usando o Apache NiFi !

Navigation