获取AWS EMR中sparkdid.cassandra.connection.config.cloud.path的正确路径
解决方案
1 配置参数错误修正
你当前使用的配置参数名存在拼写错误,正确参数为spark.cassandra.connection.config.cloud.path,而非sparkdid.cassandra.connection.config.cloud.path。前缀拼写错误会导致Cassandra驱动无法识别自定义配置,默认尝试连接本地localhost实例,就是你遇到的连接被拒绝报错的核心原因之一。
2 AWS EMR环境下的正确路径写法
根据你的bundle文件存放位置,选择对应配置方式:
- 场景1:安全bundle存放在所有集群节点的本地目录
如果通过bootstrap脚本、scp等方式将secure-connect-app.zip同步到了所有节点的相同本地路径(比如/tmp目录),直接写file协议开头的绝对路径即可:
spark.conf.set("spark.cassandra.connection.config.cloud.path", "file:/tmp/secure-connect-app.zip")
- 场景2:安全bundle存放在S3桶中
先确认EMR集群关联的EC2实例角色具备该S3对象的读取权限,直接填写S3路径即可:
spark.conf.set("spark.cassandra.connection.config.cloud.path", "s3://<你的S3桶名>/<对应存储路径>/secure-connect-app.zip")
- 场景3:在EMR Studio/Zeppelin笔记本中直接上传bundle到工作目录
这种情况仅Driver节点能访问到上传的bundle,Executor节点无法读取,会触发配置加载失败。需要先把bundle上传到S3,再用场景2的方式配置,不要直接使用相对路径。
3 配置验证
配置完成后可执行以下语句确认参数已正确加载:print(spark.conf.get("spark.cassandra.connection.config.cloud.path"))
内容的提问来源于stack exchange,提问作者Rajendra Singh
相关产品推荐
相关产品推荐

