Windows本地运行AWS Glue Job时遭遇Spark相关错误求助
问题原因
com.amazonaws.auth.AWSCredentialsProvider类属于AWS Java SDK核心认证模块,你的本地Spark运行环境未包含该依赖,导致类加载失败。
解决方法
1. Maven项目补充依赖
如果你的Glue Job是Maven项目,在pom.xml中添加以下依赖(版本需匹配你的Spark、Glue版本,例如Glue 4.0对应Spark 3.3.x):
<!-- AWS SDK核心依赖,提供认证类 --> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-core</artifactId> <version>1.12.500</version> <scope>compile</scope> </dependency> <!-- AWS Glue客户端依赖,适配Glue Job API --> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-glue</artifactId> <version>1.12.500</version> <scope>compile</scope> </dependency> <!-- Spark与AWS云存储集成依赖 --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hadoop-cloud_2.12</artifactId> <version>3.3.0</version> <scope>compile</scope> </dependency>
2. 非Maven项目手动添加JAR包
若未使用Maven,需手动下载以下JAR包,放入Spark安装目录的jars文件夹,或在启动Job时通过--jars参数指定路径:
aws-java-sdk-core-xxx.jaraws-java-sdk-glue-xxx.jarspark-hadoop-cloud_xxx.jarhadoop-aws-xxx.jar(需匹配Spark内置的Hadoop版本)
3. 配置本地AWS凭证
依赖补全后,需确保Spark能获取AWS访问凭证:
- 在用户根目录创建
~/.aws/credentials文件,写入:
[default] aws_access_key_id=你的AWS访问密钥ID aws_secret_access_key=你的AWS私有访问密钥
- 或临时设置环境变量:
export AWS_ACCESS_KEY_ID=你的AWS访问密钥ID export AWS_SECRET_ACCESS_KEY=你的AWS私有访问密钥
4. Spark启动参数调整
启动Glue Job时,可添加必要的AWS区域配置,示例:
spark-submit \ --class com.your.package.YourJobClass \ --jars /path/to/aws-jars/aws-java-sdk-core.jar,/path/to/aws-jars/aws-java-sdk-glue.jar \ --conf spark.hadoop.fs.s3a.region=us-east-1 \ your-job-jar-file.jar
内容的提问来源于stack exchange,提问作者ahkam
相关产品推荐
相关产品推荐

