首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >S3上带有美元标志的垃圾火花输出文件

S3上带有美元标志的垃圾火花输出文件
EN

Stack Overflow用户
提问于 2016-10-14 11:10:43
回答 3查看 3.9K关注 0票数 1

我有一个简单的火花作业,它从s3读取一个文件,取5个文件,然后用s3写回去。我看到的是,在s3中总是有额外的文件,在我的输出“目录”(称为output_$folder$ )旁边。

那是什么?我怎样才能阻止火花的产生?这是一些代码来说明我在做什么..。

代码语言:javascript
复制
x = spark.sparkContext.textFile("s3n://.../0000_part_00")
five = x.take(5)
five = spark.sparkContext.parallelize(five)
five.repartition(1).saveAsTextFile("s3n://prod.casumo.stu/dimensions/output/")

作业结束后,我有一个s3“目录”,名为output,它包含结果,还有另一个名为output_$folder$的s3对象,我不知道它是什么。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-14 11:31:38

好吧,好像我发现了它是什么。它是某种标记文件,可能用于确定S3目录对象是否存在。我是怎么得出这个结论的?首先,我找到了这个链接,它显示了

代码语言:javascript
复制
org.apache.hadoop.fs.s3native.NativeS3FileSystem#mkdir

方法:http://apache-spark-user-list.1001560.n3.nabble.com/S3-Extra-folder-files-for-every-directory-node-td15078.html

然后,我搜索了其他源代码存储库,以查看是否要找到该方法的不同版本。我没有。

最后,在删除s3输出目录对象但留下output_$folder$文件后,我做了一个实验,并重新运行了相同的spark工作。作业失败,说输出目录已经存在。

我的结论是,这是hadoop知道s3中是否有一个具有给定名称的目录的方法,我将不得不接受这一点。

当我从本地的开发机器(即笔记本电脑)运行作业时,所有这些都会发生。如果我从aws数据管道运行相同的作业,则不会创建output_$folder$。

票数 6
EN

Stack Overflow用户

发布于 2018-08-11 17:33:47

将应用程序中的S3路径从s3://更改为s3a://似乎对我起了很大作用。自从我开始使用$folder$之后,就不再创建s3a://文件了。

票数 6
EN

Stack Overflow用户

发布于 2021-08-11 00:05:02

s3n://s3a://不生成像<output>_$folder$那样的标记目录

如果您在AWS中使用hadoop,我发现从s3迁移到s3n是直接的,因为它们都使用相同的文件系统实现,而s3a涉及AWS凭据相关的代码更改。

代码语言:javascript
复制
('fs.s3.impl', 'com.amazon.ws.emr.hadoop.fs.EmrFileSystem')
('fs.s3n.impl', 'com.amazon.ws.emr.hadoop.fs.EmrFileSystem')
('fs.s3a.impl', 'org.apache.hadoop.fs.s3a.S3AFileSystem')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40041732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档