Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/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
Scala Spark编写压缩的CSV,带有到S3的自定义路径_Scala_Apache Spark - Fatal编程技术网

Scala Spark编写压缩的CSV,带有到S3的自定义路径

Scala Spark编写压缩的CSV,带有到S3的自定义路径,scala,apache-spark,Scala,Apache Spark,我尝试使用Scala中编写的Spark将CSV简单地写入S3: 我注意到在我的输出桶中有以下文件: …已处理/montfh-04.csv/part-00000-723a3d72-56f6-4e62-b627-9a181a820f6a-c000.csv.snappy 当它只应为montfh-04.csv时 代码: 在这里,我注意到两件奇怪的事情: 它把它放在一个目录中 它使用snappy压缩将奇怪的零件子路径添加到文件中 我所要做的只是将一个具有该名称的平面CSV文件写入指定路径。我的选择是什

我尝试使用Scala中编写的Spark将CSV简单地写入S3:

我注意到在我的输出桶中有以下文件:
…已处理/montfh-04.csv/part-00000-723a3d72-56f6-4e62-b627-9a181a820f6a-c000.csv.snappy

当它只应为
montfh-04.csv时

代码: 在这里,我注意到两件奇怪的事情:

  • 它把它放在一个目录中
  • 它使用snappy压缩将奇怪的零件子路径添加到文件中

我所要做的只是将一个具有该名称的平面CSV文件写入指定路径。我的选择是什么?

这就是spark的工作原理。为保存DataSet/DataFrame提供的位置是spark可以写入其所有分区的目录位置。 零件文件的数量将等于分区的数量,在您的情况下,分区的数量仅为1

现在,如果希望文件名仅为montfh-04.csv,则可以重命名它


注意:S3中的重命名操作成本很高(复制和删除)。当您使用spark编写时,它将是I/O的3倍,是输出提交操作的2倍,是重命名操作的1倍。最好用HDFS编写,然后用所需的密钥名从那里上传。

spark就是这样工作的。为保存DataSet/DataFrame提供的位置是spark可以写入其所有分区的目录位置。 零件文件的数量将等于分区的数量,在您的情况下,分区的数量仅为1

现在,如果希望文件名仅为montfh-04.csv,则可以重命名它


注意:S3中的重命名操作成本很高(复制和删除)。当您使用spark编写时,它将是I/O的3倍,是输出提交操作的2倍,是重命名操作的1倍。最好用HDFS编写,然后用所需的密钥名从那里上传。

谢谢。我想我只需要使用目录,并根据需要覆盖目录,以使我的简单用例保持简单。谢谢你的信息谢谢。我想我只需要使用目录,并根据需要覆盖目录,以使我的简单用例保持简单。谢谢你的信息
    val processedMetadataDf = spark.read.csv("s3://" + metadataPath + "/PROCESSED/" + "month-04" + ".csv")
    val processCount = processedMetadataDf.count()
    if (processCount == 0) {
        // Initial frame is 0B -> Overwrite with path 
        val newDat = Seq("dummy-row-data")
        val unknown_df = newDat.toDF()
        unknown_df.write.mode("overwrite").option("header","false").csv("s3://" + metadataPath + "/PROCESSED/" + "montfh-04" + ".csv")
        
    }