amazon-s3 - EMR 到 S3 文件写入给我错误 java.net.URISyntaxException:绝对 URI 中的相对路径
问题描述
我正在从 EMR 集群运行 pyspark 应用程序。我有两个桶 - 一个输入数据桶user-data-input和一个 o/p 数据桶来存储脚本结果movie-stats。我用于写入输出存储桶的代码
final_df = ratings.join(movie_title, 'movieId', 'left') \
.select('movieId', 'title', 'release_year', 'avg_rating', 'ratings_count', 'distinct_viewers') \
.coalesce(1)
final_df.write.csv('s3://movie-stats', header=True, mode='overwrite')
我的电影统计数据桶政策如下。
{
"Version": "2012-10-17",
"Id": "Policy1606478144619",
"Statement": [
{
"Sid": "Stmt1606478053538",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::movie-stats/*",
"arn:aws:s3:::movie-stats"
]
}
]
}
我的脚本可以从 S3 存储桶读取数据并运行分析,但在尝试写入 S3 时抛出错误
java.net.URISyntaxException: Relative path in absolute URI: s3://movie-stats.spark-staging-f2e2ecd7-5c42-483a-888c-6a6295b76c0d
我不明白这个错误,也没有从谷歌那里找到太多了解应该如何为输出提及 S3 路径。
解决方案
Ypu 已经解决了,但是根目录很特别,它们永远不会消失。
为文件系统编写的应用程序从不期望使用 / 作为它们的输出,因此不能很好地将它用作对象存储输出的根。
推荐阅读
- c# - 更改 CommandField“更新”和“取消”按钮的位置?
- javascript - 如何添加从存储桶中删除对象的方法?
- azure-cognitive-search - Azure 搜索:rotationFromOriginal 未正确填充
- html - 如何使用带有线条和圆圈的引导程序创建时间线轮播
- android - Ionic:通过社交媒体分享特定页面
- loopbackjs - 当所需的数据库字段在 JSON 中时,如何从模型创建数据库模式?
- c# - 对话框没有从它等待用户输入的地方继续
- android - 谷歌地图信息窗口背景不适用于边框
- python - Python添加2个多维numpy数组
- c# - 我应该避免使用内置的 ASP.NET 身份机制吗?