我刚刚使用Glue,但还没有在现有的S3存储桶中成功创建新表。作业将无错误地执行,但S3中从不存在任何输出。
以下是自动生成的代码:
glueContext.write_dynamic_frame.from_options(frame = applymapping1,
connection_type = "s3", connection_options = {"path":
"s3://glueoutput/output/"}, format = "json", transformation_ctx =
"datasink2")
尝试了所有这些变体 - 文件名(尚未存在),在存储桶的根文件夹中,尾随斜杠和没有。使用的角色具有对S3的完全访问权限。尝试在不同地区创建水桶。但是没有创建任何文件。控制台再次说它成功了。
答案 0 :(得分:2)
您的代码是否正确,只需验证applymapping1 DF中是否有任何数据?使用此命令检查:applymapping1.toDF()。show()
答案 1 :(得分:2)
正如@Drellgor 在他对上一个答案的评论中所建议的那样,除非您绝对不想处理旧文件,否则请确保禁用“作业书签”。
"AWS Glue 通过保留作业运行中的状态信息来跟踪在 ETL 作业的上一次运行期间已经处理过的数据。这种保留的状态信息称为作业书签。作业书签帮助 AWS Glue 维护状态信息并防止旧数据的再处理。”
答案 2 :(得分:0)
您需要修改您的 IAM 角色。您应该定义您的 IAM 角色可以写入和读取 S3。
确保您使用您编辑的 IAM 角色运行 AWS Glue。 祝你好运。
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"