Le connecteur HTTP est distribué sous la Confluent Enterprise License.
Étapes de prise en main rapide
1. Récupérez vos informations de connexion
Les informations de votre service ClickHouse Cloud sont disponibles dans la console ClickHouse Cloud.
Sélectionnez un service, puis cliquez sur Connect :
Choisissez HTTPS. Les détails de connexion s’affichent dans un exemple de commande
curl.
Si vous utilisez ClickHouse autogéré, les détails de connexion sont définis par votre administrateur ClickHouse.
2. Exécuter Kafka Connect et le connecteur HTTP Sink
-
Autogéré : Téléchargez le paquet Confluent et installez-le localement. Suivez les instructions d’installation du connecteur décrites ici.
Si vous utilisez la méthode d’installation
confluent-hub, vos fichiers de configuration locaux seront mis à jour. - Confluent Cloud : Une version entièrement gérée de HTTP Sink est disponible pour les utilisateurs de Confluent Cloud pour l’hébergement de Kafka. Cela nécessite que votre environnement ClickHouse soit accessible depuis Confluent Cloud.
Les exemples suivants utilisent Confluent Cloud.
3. Créer une table de destination dans ClickHouse
4. Configurer HTTP Sink
Configurez le HTTP Sink Connector :
- Indiquez le nom du topic que vous avez créé
- Authentification
HTTP Url- URL ClickHouse Cloud avec une requêteINSERTspécifiée :<protocol>://<clickhouse_host>:<clickhouse_port>?query=INSERT%20INTO%20<database>.<table>%20FORMAT%20JSONEachRow. Remarque : la requête doit être encodée.Endpoint Authentication type- BASICAuth username- nom d’utilisateur ClickHouseAuth password- mot de passe ClickHouse
Cette URL HTTP est source d’erreurs. Assurez-vous que l’échappement est correct pour éviter tout problème.
- Configuration
Input Kafka record value format- Cela dépend de vos données source, mais dans la plupart des cas, il s’agit de JSON ou d’Avro. Nous partons de l’hypothèse deJSONdans les paramètres suivants.- Dans la section
advanced configurations:HTTP Request Method- Définir sur POSTRequest Body Format- jsonBatch batch size- Conformément aux recommandations de ClickHouse, définissez cette valeur sur au moins 1000.Batch json as array- trueRetry on HTTP codes- 400-500, mais adaptez selon vos besoins ; par exemple, cela peut changer si vous avez un proxy HTTP devant ClickHouse.Maximum Reties- la valeur par défaut (10) convient, mais n’hésitez pas à l’ajuster pour renforcer la stratégie de nouvelle tentative.
5. Test de la connectivité
et vérifiez que le message créé a bien été écrit dans votre instance ClickHouse.
Dépannage
HTTP Sink ne traite pas les messages par lot
Le connecteur HTTP Sink ne regroupe pas les requêtes pour les messages contenant des valeurs d’en-tête Kafka différentes.
- Vérifiez que vos enregistrements Kafka ont la même clé.
- Lorsque vous ajoutez des paramètres à l’URL de l’API HTTP, chaque enregistrement peut générer une URL unique. Pour cette raison, le traitement par lot est désactivé lorsque des paramètres d’URL supplémentaires sont utilisés.
400 Requête incorrecte
CANNOT_PARSE_QUOTED_STRING
String :
input_format_json_read_objects_as_strings=1 dans l’URL sous la forme d’une chaîne encodée SETTINGS%20input_format_json_read_objects_as_strings%3D1
Charger le jeu de données GitHub (facultatif)
1. Préparer la configuration
http.api.url. L’interface HTTP de ClickHouse exige que vous encodiez l’instruction INSERT dans l’URL sous forme de paramètre. Celui-ci doit inclure le format (JSONEachRow dans ce cas) et la base de données cible. Le format doit être cohérent avec les données Kafka, qui seront converties en chaîne dans le payload HTTP. Ces paramètres doivent être encodés pour l’URL. Un exemple de ce format pour le jeu de données GitHub (en supposant que vous exécutez ClickHouse localement) est présenté ci-dessous :
request.method- Définir sur POSTretry.on.status.codes- Définir sur 400-500 pour réessayer sur tous les codes d’erreur. À ajuster en fonction des erreurs attendues dans les données.request.body.format- Dans la plupart des cas, ce sera JSON.auth.type- Définir sur BASIC si vous utilisez l’authentification avec ClickHouse. Les autres mécanismes d’authentification compatibles avec ClickHouse ne sont pas pris en charge actuellement.ssl.enabled- définir sur true si vous utilisez SSL.connection.user- nom d’utilisateur pour ClickHouse.connection.password- mot de passe pour ClickHouse.batch.max.size- Le nombre de lignes à envoyer dans un seul lot. Assurez-vous que cette valeur est définie sur un nombre suffisamment élevé. Conformément aux recommandations de ClickHouse, 1000 doit être considéré comme une valeur minimale.tasks.max- Le connecteur HTTP Sink permet d’exécuter une ou plusieurs tâches. Cela peut être utilisé pour améliorer les performances. Avec la taille des lots, c’est votre principal levier d’optimisation des performances.key.converter- définir en fonction des types de vos clés.value.converter- définir en fonction du type de données de votre topic. Ces données n’ont pas besoin de schéma. Le format indiqué ici doit être cohérent avec le FORMAT spécifié dans le paramètrehttp.api.url. Le plus simple est d’utiliser JSON et le convertisseur org.apache.kafka.connect.json.JsonConverter. Il est également possible de traiter la valeur comme une chaîne via le convertisseur org.apache.kafka.connect.storage.StringConverter, bien que cela oblige l’utilisateur à extraire une valeur dans l’instruction insert à l’aide de fonctions. Le format Avro est également pris en charge dans ClickHouse si vous utilisez le convertisseur io.confluent.connect.avro.AvroConverter.