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

Spark连接Cassandra存储CSV文件时遇连接失败错误求助

解决Spark连接Cassandra时的本地连接失败问题

看起来你遇到了Spark与Cassandra连接的典型问题——无法建立到本地Cassandra 9042端口的原生连接。我帮你一步步排查和解决:

  • 先确认Cassandra服务是否正常运行
    首先排除最基础的问题:Cassandra有没有启动?

    • 如果是Linux系统用systemd管理,执行命令:systemctl status cassandra,看输出里的状态是不是active (running)
    • 或者用Cassandra自带工具:nodetool status,如果能返回节点状态,说明服务正常;如果提示“Connection refused”,先启动服务:systemctl start cassandra
  • 测试9042端口的连通性
    确认Cassandra的CQL端口(默认9042)是否能被本地访问:

    • 执行telnet 127.0.0.1 9042,如果能进入空白界面,说明端口没问题;如果提示“Connection refused”,继续往下排查
    • 或者用nc -zv 127.0.0.1 9042,输出显示succeeded才是正常的
  • 检查Cassandra的配置文件
    打开Cassandra的配置文件cassandra.yaml(通常在/etc/cassandra/或安装目录的conf下),检查几个关键配置:

    • rpc_address:这个是CQL服务监听的地址,要设置为127.0.0.1或者0.0.0.0(允许所有地址访问),如果设成其他IP,本地Spark就连接不上
    • native_transport_port:确认是不是9042,如果改了端口,Spark连接时也要对应修改端口配置
      改完配置后需要重启Cassandra服务生效
  • 验证Spark Connector版本兼容性
    Spark和Cassandra的版本必须与Spark Connector版本匹配,这是很多人踩坑的点:

    • 比如Spark 3.4.x要搭配spark-cassandra-connector_2.12:3.4.1,Spark 2.4.x要搭配spark-cassandra-connector_2.11:2.4.3这类对应版本
      你可以在Spark提交命令或代码里检查依赖的Connector版本是否正确,比如--packages com.datastax.spark:spark-cassandra-connector_2.12:3.4.1
  • 检查Spark的连接配置
    确保你的Spark代码或提交命令里的Cassandra连接参数正确:
    比如在SparkSession里设置:

    val spark = SparkSession.builder()
      .appName("SparkCassandraExample")
      .config("spark.cassandra.connection.host", "127.0.0.1")
      .config("spark.cassandra.connection.port", "9042")
      // 如果Cassandra开了认证,还要加下面两行
      // .config("spark.cassandra.auth.username", "your_username")
      // .config("spark.cassandra.auth.password", "your_password")
      .getOrCreate()
    

    如果用spark-submit提交,要把这些配置通过--conf参数传递:spark-submit --conf spark.cassandra.connection.host=127.0.0.1 ...

  • 排查本地防火墙/安全组
    本地防火墙可能会阻止Spark访问9042端口:

    • 如果是ufw防火墙,执行ufw allow 9042开放端口,或者临时关闭防火墙测试:ufw disable
    • 如果是iptables,执行iptables -A INPUT -p tcp --dport 9042 -s 127.0.0.1 -j ACCEPT允许本地访问
  • 查看详细日志定位问题
    如果上面的步骤都没解决,看看更详细的日志:

    • Cassandra的system.log(通常在/var/log/cassandra/),搜索关键词native_transport,看有没有启动失败、端口被占用的信息
    • Spark的日志,找到完整的错误堆栈,里面可能会有更具体的原因,比如认证失败、版本不兼容的提示

你提供的错误信息:
java.io.IOException: Failed to open native connection to Cassandra at {127.0.0.1}:9042 at com.datastax.spark.connector.cql.CassandraConnector$.com$datastax$spark$connector$cql$CassandraConnector$$createSession(CassandraConnector.scala:168) at com.datastax.spark.connector.cql.CassandraConnector$$anonfun$8.apply(CassandraConnector.scala:154) at com.datastax.spa...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:00:35