PySpark Glue作业写入Spark DataFrame到DDB遇数据源错误,需外部Jar吗?
解决PySpark Glue作业写入DynamoDB的"Failed to find data source"错误
是的,必须依赖AWS官方提供的Spark-DynamoDB连接器Jar包,Spark本身未内置该数据源支持。结合AWS Glue版本,具体处理方式如下:
1. AWS Glue 2.0及以上版本
Glue 2.0+已内置DynamoDB连接器,无需手动上传Jar,但需注意两个关键点:
- 在Glue作业配置的Job parameters中添加参数:
--datalake-formats dynamodb - 修正代码中的参数名与格式写法:
注意:参数需用redshift_df.write.format("dynamodb")\ .option("tableName", "accounts_payable_payee_info")\ .option("region", "你的AWS区域(如us-east-1)")\ .save()tableName而非你之前写的table,字段名大小写需与DynamoDB表完全匹配。
2. AWS Glue 1.0版本
需手动部署连接器Jar:
- 下载与你的Spark版本匹配的
spark-dynamodb-connector官方Jar包 - 将Jar上传至AWS S3存储桶
- 在Glue作业配置的Jar path中指定该Jar的S3路径
- 代码写法调整为:
redshift_df.write.format("io.aws.dynamodb")\ .option("tableName", "accounts_payable_payee_info")\ .option("region", "你的AWS区域")\ .save()
额外注意事项
- 确保Glue作业的IAM角色拥有
dynamodb:BatchWriteItem、dynamodb:PutItem等写入DynamoDB的权限 - 若DynamoDB表启用了加密,需确保IAM角色拥有对应的KMS密钥访问权限
内容的提问来源于stack exchange,提问作者Jatin
相关产品推荐
相关产品推荐

