在AWS EMR集群Python Notebook创建Spark Session时遇IllegalArgumentException错误
解决AWS EMR中Spark读取S3数据时的"IllegalArgumentException: For input string: '64M'"错误
错误原因
这个错误是由于你手动指定的hadoop-aws版本与EMR集群自带的Hadoop版本不兼容导致的。EMR集群默认预装了适配自身环境的Hadoop及AWS客户端组件,强行指定低版本(如2.7.0)会引发配置解析冲突,比如内存参数"64M"无法被正确识别。
解决方案
移除手动指定的hadoop-aws依赖:直接使用EMR预装的兼容版本,修改SparkSession创建代码:
spark = SparkSession.builder.getOrCreate()匹配EMR集群的Hadoop版本指定依赖:如果必须自定义版本,先通过EMR控制台查看集群的Hadoop版本(比如EMR 5.36.0对应Hadoop 2.10.1),然后指定完全一致的
hadoop-aws版本:spark = SparkSession.builder .config("spark.jars.packages","org.apache.hadoop:hadoop-aws:2.10.1") .getOrCreate()验证S3路径与权限:确认
s3a://mydata/song_data/路径存在,且EMR集群的IAM角色拥有该S3存储桶的读取权限。
内容的提问来源于stack exchange,提问作者SRJ
相关产品推荐
相关产品推荐

