Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark S3上带有美元符号的垃圾火花输出文件_Apache Spark_Amazon S3_Pyspark - Fatal编程技术网

Apache spark S3上带有美元符号的垃圾火花输出文件

Apache spark S3上带有美元符号的垃圾火花输出文件,apache-spark,amazon-s3,pyspark,Apache Spark,Amazon S3,Pyspark,我有一个简单的spark任务,从s3读取一个文件,取五个,然后在s3中写回。 我看到的是,在s3中,在我的输出“目录”旁边总是有一个额外的文件,它被称为output_$folder$ 这是什么?如何防止spark创建它? 下面是一些代码来显示我正在做什么 x = spark.sparkContext.textFile("s3n://.../0000_part_00") five = x.take(5) five = spark.sparkContext.parallelize(five) fiv

我有一个简单的spark任务,从s3读取一个文件,取五个,然后在s3中写回。 我看到的是,在s3中,在我的输出“目录”旁边总是有一个额外的文件,它被称为output_$folder$

这是什么?如何防止spark创建它? 下面是一些代码来显示我正在做什么

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/")

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

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

org.apache.hadoop.fs.s3native.NativeS3FileSystem#mkdir
方法:

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

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

我的结论是,这是hadoop知道s3中是否有一个同名目录的方法,我不得不接受它


当我从本地的开发机器(即笔记本电脑)运行作业时,上述所有情况都会发生。如果我从aws数据管道运行相同的作业,则不会创建输出文件夹$。

将应用程序中的S3路径从
S3://
更改为
s3a://
,这似乎对我起到了作用。自从我开始使用
s3a://
以来,不再创建
$folder$
文件