eza*_*mur 1 amazon-s3 apache-spark pyspark
我有一个简单的 spark 作业,它从 s3 读取一个文件,需要五个并在 s3 中写回。我看到的是 s3 中总是有附加文件,在我的输出“目录”旁边,称为 output_$folder$。
它是什么?如何防止产生火花?这是一些代码来显示我在做什么......
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/")
Run Code Online (Sandbox Code Playgroud)
完成工作后,我有一个名为 output 的 s3“目录”,其中包含结果和另一个名为 output_$folder$ 的 s3 对象,我不知道它是什么。
好吧,看来我知道那是什么了。它是某种标记文件,可能用于确定 S3 目录对象是否存在。我是如何得出这个结论的?首先,我发现这个链接显示了来源
org.apache.hadoop.fs.s3native.NativeS3FileSystem#mkdir
Run Code Online (Sandbox Code Playgroud)
然后我用谷歌搜索其他源存储库,看看是否能找到该方法的不同版本。我没有。
最后,我做了一个实验,在删除 s3 输出目录对象但留下了 output_$folder$ 文件后重新运行相同的 Spark 作业。作业失败,表示输出目录已存在。
我的结论是,这是 hadoop 知道 s3 中是否存在具有给定名称的目录的方式,我将不得不接受这一点。
当我从本地开发机器(即笔记本电脑)运行作业时,上述所有情况都会发生。如果我从 aws 数据管道运行相同的作业,则不会创建 output_$folder$。
| 归档时间: |
|
| 查看次数: |
3049 次 |
| 最近记录: |