You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Spark Native Connector连接ClickHouse Cloud时持续遇Connection Reset错误如何解决?

解决ClickHouse Spark Native Connector连接Cloud时的Connection reset问题

问题背景

已按照ClickHouse Spark Native Connector文档指引,下载以下依赖:

  • clickhouse-spark-runtime-3.5.2_0.8.0
  • clickhouse-jdbc-all-0.9.2

Catalog配置项:

  • 用户名、密码、主机名均正确配置
  • SSL模式设为true
  • 端口使用8443
  • 协议指定为https

连接时触发错误:

com.clickhouse.spark.CHException: [HTTP] user@host:8443/default [210] Connection reset

curl及Airflow均可正常访问目标ClickHouse Cloud实例,仅Spark连接出现问题。

可能的解决方案

1. 对齐JDBC与Spark Runtime版本兼容性

clickhouse-spark-runtime-0.8.0官方建议搭配0.8.x系列的JDBC驱动,你当前使用的clickhouse-jdbc-all-0.9.2属于跨大版本,存在兼容性冲突风险。建议替换为clickhouse-jdbc-all-0.8.2(与Spark Runtime版本匹配的稳定版),重新部署依赖后测试连接。

2. 补充SSL证书信任配置

仅开启SSL可能因证书校验失败导致连接重置,在Spark Catalog配置中添加以下参数:

  • spark.sql.catalog.clickhouse.security.ssl.trustStorePath:指定JDK默认证书库路径(例如/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/security/cacerts,路径根据你的Java环境调整)
  • spark.sql.catalog.clickhouse.security.ssl.trustStorePassword:默认证书库密码为changeit
  • 测试环境可临时添加spark.sql.catalog.clickhouse.security.ssl.insecure=true跳过证书校验(生产环境禁用)

3. 延长连接超时与重试次数

连接重置可能由超时触发,添加以下参数调整阈值:

  • spark.sql.catalog.clickhouse.http.connectionTimeout=30000(设置为30秒)
  • spark.sql.catalog.clickhouse.http.socketTimeout=60000(设置为60秒)
  • spark.sql.catalog.clickhouse.http.maxRetries=3

4. 排查Spark节点网络权限

虽然curl和Airflow能访问,但Spark集群节点可能受不同网络策略限制:

  • 在Spark节点上执行curl https://host:8443/ping,确认网络连通性
  • 检查Spark节点是否被防火墙/安全组限制访问8443端口
  • 若使用代理,需在Spark配置中添加代理参数:
    spark.sql.catalog.clickhouse.http.proxyHost=你的代理主机
    spark.sql.catalog.clickhouse.http.proxyPort=你的代理端口
    

5. 切换为Native协议连接

ClickHouse Spark Connector支持Native TCP协议,尝试切换配置:

  • 协议改为native
  • 端口改为ClickHouse Cloud的Native SSL端口9440
  • 核心配置示例:
    spark.sql.catalog.clickhouse=com.clickhouse.spark.ClickHouseCatalog
    spark.sql.catalog.clickhouse.host=你的ClickHouse主机
    spark.sql.catalog.clickhouse.protocol=native
    spark.sql.catalog.clickhouse.port=9440
    spark.sql.catalog.clickhouse.security.ssl=true
    spark.sql.catalog.clickhouse.user=你的用户名
    spark.sql.catalog.clickhouse.password=你的密码
    

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

火山引擎 最新活动