Pular para o conteúdo principal
O executable pool permite carregar dados a partir de um pool de processos. Essa fonte não funciona com layouts de dicionário que precisam carregar todos os dados da fonte. O executable pool funciona se o dicionário for armazenado usando um dos seguintes layouts:
  • cache
  • complex_key_cache
  • ssd_cache
  • complex_key_ssd_cache
  • direct
  • complex_key_direct
O executable pool iniciará um pool de processos com o comando especificado e os manterá em execução até serem encerrados. O programa deve ler dados de STDIN enquanto estiverem disponíveis e enviar o resultado para STDOUT. Ele pode aguardar o próximo bloco de dados em STDIN. O ClickHouse não fechará o STDIN após processar um bloco de dados, mas enviará outro fragmento de dados quando necessário. O script executável deve estar preparado para essa forma de processamento de dados — ele deve verificar o STDIN e descarregar os dados para o STDOUT o quanto antes. Exemplo de configurações:
SOURCE(EXECUTABLE_POOL(
    command 'while read key; do printf "$key\tData for key $key\n"; done'
    format 'TabSeparated'
    pool_size 10
    max_command_execution_time 10
    implicit_key false
))
Campos de configuração:
ConfiguraçãoDescrição
commandO caminho absoluto para o arquivo executável ou o nome do arquivo (se o diretório do programa estiver definido em PATH).
formatO formato do arquivo. Todos os formatos descritos em Formatos são compatíveis.
pool_sizeTamanho do pool. Se 0 for especificado como pool_size, não haverá restrições para o tamanho do pool. O valor padrão é 16.
command_termination_timeoutO script executável deve conter o loop principal de leitura e escrita. Depois que o dicionário for destruído, o pipe será fechado, e o arquivo executável terá command_termination_timeout segundos para encerrar antes que o ClickHouse envie o sinal SIGTERM ao processo filho. Especificado em segundos. O valor padrão é 10. Opcional.
max_command_execution_timeTempo máximo de execução do comando do script executável para processar um bloco de dados. Especificado em segundos. O valor padrão é 10. Opcional.
command_read_timeoutTempo limite para ler dados do stdout do comando, em milissegundos. O valor padrão é 10000. Opcional.
command_write_timeoutTempo limite para gravar dados no stdin do comando, em milissegundos. O valor padrão é 10000. Opcional.
implicit_keyO arquivo da fonte executável pode retornar apenas valores, e a correspondência com as chaves solicitadas é determinada implicitamente pela ordem das linhas no resultado. O valor padrão é false. Opcional.
execute_directSe execute_direct = 1, command será procurado dentro da pasta user_scripts especificada por user_scripts_path. Argumentos adicionais do script podem ser especificados usando separação por espaço em branco. Exemplo: script_name arg1 arg2. Se execute_direct = 0, command é passado como argumento para bin/sh -c. O valor padrão é 1. Opcional.
send_chunk_headerControla se a contagem de linhas deve ser enviada antes de enviar um fragmento de dados ao processo. O valor padrão é false. Opcional.
Essa fonte de dicionário pode ser configurada apenas via configuração XML. A criação de dicionários com fonte executável via DDL está desabilitada; caso contrário, o usuário do DB poderia executar um binário arbitrário no nó do ClickHouse.
Última modificação em 10 de junho de 2026