You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自建Minikube环境中ClickHouse-Kafka-Connect连接失败求助

解决ClickHouse Kafka Sink连接404错误问题

问题核心

你的Kafka Sink无法连接ClickHouse的原因是:ClickHouse HTTP接口不支持将数据库名作为URL路径后缀(如/demodb),仅允许通过?database=demodb查询参数指定目标数据库。当前Connector错误地将数据库名拼入了连接URL路径,导致返回404 There is no handle /demodb。

验证依据

你已通过curl命令确认两种URL格式的差异:

  • 错误格式(路径方式):返回404
    echo 'SELECT 1' | curl -H 'X-ClickHouse-User: sink_writer' -H 'X-ClickHouse-Key: password' 'http://cluster-demo-cluster.clickhouse.svc.cluster.local:8123/demodb' -d @-
    
  • 正确格式(查询参数方式):可正常执行查询
    echo 'SELECT 1' | curl -H 'X-ClickHouse-User: sink_writer' -H 'X-ClickHouse-Key: password' 'http://cluster-demo-cluster.clickhouse.svc.cluster.local:8123/?database=demodb' -d @-
    

解决方案:调整KafkaConnector配置

修改KafkaConnector资源配置,将数据库名从URL中剥离,通过Connector专属参数单独指定:

  1. 原错误配置示例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnector
metadata:
  name: clickhouse-sink-connector
  labels:
    strimzi.io/cluster: my-connect-cluster
spec:
  class: com.clickhouse.kafka.connect.ClickHouseSinkConnector
  tasksMax: 1
  config:
    topics: activity
    connection.url: "http://cluster-demo-cluster.clickhouse.svc.cluster.local:8123/demodb"
    connection.user: sink_writer
    connection.password: password
    # 其他配置项
  1. 修正后的配置
    将connection.url改为不带数据库名的基础地址,新增database-name参数指定demodb:
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnector
metadata:
  name: clickhouse-sink-connector
  labels:
    strimzi.io/cluster: my-connect-cluster
spec:
  class: com.clickhouse.kafka.connect.ClickHouseSinkConnector
  tasksMax: 1
  config:
    topics: activity
    connection.url: "http://cluster-demo-cluster.clickhouse.svc.cluster.local:8123"
    connection.user: sink_writer
    connection.password: password
    database-name: demodb
    # 其他配置项(如表名、序列化方式等)
  1. 应用配置更新
    执行kubectl命令更新Connector:
kubectl apply -f your-connector-config.yaml
  1. 验证修复
    查看Connector日志确认连接状态正常,或通过日志输出的URL确认格式已改为带?database=demodb查询参数的正确形式。

补充说明

不同版本的clickhouse-kafka-connect可能参数名略有差异,部分版本可能使用sink.database替代database-name。如果上述参数不生效,可核对Connector版本对应的官方参数文档,但核心逻辑一致:不要将数据库名拼入URL路径,通过独立参数指定。

内容的提问来源于stack exchange,提问作者Nitishkumar Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 23:48:27