Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Source de dictionnaire Executable Pool

Executable pool permet de charger des données à partir d'un pool de processus. Cette source ne fonctionne pas avec les dictionary layouts qui doivent charger toutes les données depuis la source.

Executable pool fonctionne si le dictionnaire est stocké à l'aide de l'un des layouts suivants :

  • cache
  • complex_key_cache
  • ssd_cache
  • complex_key_ssd_cache
  • direct
  • complex_key_direct

Executable pool lance un pool de processus avec la commande spécifiée et les maintient en cours d'exécution jusqu'à leur arrêt. Le programme doit lire les données depuis STDIN tant qu'elles sont disponibles et écrire le résultat sur STDOUT. Il peut attendre le bloc de données suivant sur STDIN. ClickHouse ne fermera pas STDIN après le traitement d'un bloc de données, mais y enverra un autre chunk de données si nécessaire. Le script exécutable doit être conçu pour ce mode de traitement des données : il doit surveiller STDIN et vider rapidement les données vers STDOUT.

Exemple de paramètres :

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
))

Champs de paramétrage :

Paramètre Description
command Le chemin absolu vers le fichier exécutable, ou le nom du fichier (si le répertoire du programme figure dans PATH).
format Le format de fichier. Tous les formats décrits dans Formats sont pris en charge.
pool_size Taille du pool. Si 0 est spécifié pour pool_size, il n'y a pas de limite de taille du pool. La valeur par défaut est 16.
command_termination_timeout Le script exécutable doit contenir une boucle principale en lecture-écriture. Une fois le dictionnaire détruit, le pipe est fermé, et le fichier exécutable dispose de command_termination_timeout secondes pour s'arrêter avant que ClickHouse n'envoie un signal SIGTERM au processus enfant. Exprimé en secondes. La valeur par défaut est 10. Facultatif.
max_command_execution_time Temps d'exécution maximal de la commande du script exécutable pour traiter un bloc de données. Exprimé en secondes. La valeur par défaut est 10. Facultatif.
command_read_timeout Délai d'attente pour la lecture des données depuis le stdout de la commande, en millisecondes. Valeur par défaut : 10000. Facultatif.
command_write_timeout Délai d'attente pour l'écriture des données vers le stdin de la commande, en millisecondes. Valeur par défaut : 10000. Facultatif.
implicit_key Le fichier source exécutable peut ne renvoyer que des valeurs, et la correspondance avec les clés demandées est alors déterminée implicitement par l'ordre des rows dans le résultat. La valeur par défaut est false. Facultatif.
execute_direct Si execute_direct = 1, alors command est recherché dans le dossier user_scripts spécifié par user_scripts_path. Des arguments de script supplémentaires peuvent être indiqués en les séparant par des espaces. Exemple : script_name arg1 arg2. Si execute_direct = 0, command est passé comme argument à bin/sh -c. La valeur par défaut est 1. Facultatif.
send_chunk_header Contrôle s'il faut envoyer le nombre de rows avant d'envoyer un chunk de données au processus. La valeur par défaut est false. Facultatif.

Cette source de dictionnaire ne peut être configurée que via une configuration XML. La création de dictionnaires avec une source exécutable via DDL est désactivée, sinon l'utilisateur de la DB pourrait exécuter un binaire arbitraire sur un nœud ClickHouse.

Navigation