EMR-6.7.0 Spark添加Redis驱动Jar后连接AWS Redis集群报错求助
EMR集群连接AWS Redis集群失败求助
我尝试从EMR集群连接AWS Redis集群,操作步骤如下:
- 将
spark-redis-2.3.0.jar上传至S3存储桶,通过引导操作把Jar包复制到集群节点:
aws s3 cp s3://sparkbcuket/spark-redis-2.3.0.jar /home/hadoop/spark-redis-2.3.0.jar
- 编写Spark测试应用代码:
import sys from pyspark.sql import SparkSession if __name__ == "__main__": spark = SparkSession.builder\ .config("spark.redis.host", "testredis-0013.vb4vgr.00341.eu1.cache.amazonaws.com")\ .config("spark.redis.port", "6379")\ .appName("Redis_test").getOrCreate() df = spark.read.format("org.apache.spark.sql.redis").option("key.column", "key").option("keys.pattern","*").load() df.write.csv(path='s3://sparkbucket/',sep=',') spark.stop()
- 用以下命令提交应用:
spark-submit --deploy-mode cluster --driver-class-path /home/hadoop/spark-redis-2.3.0.jar s3://sparkbucket/testredis.py
运行后出现错误:
ERROR Client: Application diagnostics message: User application exited with status 1 Exception in thread "main" org.apache.spark.SparkException: Application application_1658168513779_0001 finished with failed status
不清楚问题出在哪里,求排查方向和解决办法。
排查与解决建议
1. 依赖Jar包分发问题
你通过引导操作把Jar包复制到了/home/hadoop/目录,但集群模式下Executor节点无法访问该路径,且--driver-class-path仅对Driver生效,Executor需要单独指定依赖。解决方式:
- 改用
--jars参数直接指定S3上的Jar包路径,Spark会自动将Jar包分发至所有节点:spark-submit --deploy-mode cluster --jars s3://sparkbcuket/spark-redis-2.3.0.jar s3://sparkbucket/testredis.py - 或者在引导操作中将Jar包复制到Spark默认依赖目录
/usr/lib/spark/jars/,这样所有节点的Spark都能加载到该Jar包。
2. 网络连通性验证
- 检查EMR集群安全组是否允许出站访问Redis集群的6379端口,同时Redis集群的安全组是否允许EMR集群所在IP段的入站访问。
- 在EMR任意节点执行
nc -zv testredis-0013.vb4vgr.00341.eu1.cache.amazonaws.com 6379,确认网络连接正常。
3. 权限配置检查
- 确认Spark应用运行用户拥有S3存储桶
s3://sparkbucket/的读写权限,尤其是写入CSV文件的权限。 - 如果Redis集群设置了密码认证,需在SparkSession配置中添加认证参数:
spark = SparkSession.builder\ .config("spark.redis.host", "testredis-0013.vb4vgr.00341.eu1.cache.amazonaws.com")\ .config("spark.redis.port", "6379")\ .config("spark.redis.auth", "你的Redis密码")\ .appName("Redis_test").getOrCreate()
4. 查看详细日志定位根因
当前错误仅为顶层提示,需查看Driver和Executor的详细日志:
- 登录EMR控制台,找到对应应用ID,查看具体的异常堆栈信息(如类找不到、连接超时、权限报错等),这是定位问题的核心依据。
内容的提问来源于stack exchange,提问作者billie class
相关产品推荐
相关产品推荐

