【问题标题】:Writing dataframe into an existing csv file scala将数据框写入现有的 csv 文件
【发布时间】:2021-05-27 17:05:49
【问题描述】:

我有以下带有数据的数据框

+---------------------------+-------+
|sport                      |value  |
+---------------------------+-------+
|table tennis               |12     |
+---------------------------+-------+

我想将此数据帧写入现有的 csv 文件。我的代码如下

val existingSparkSession = SparkSession.builder().getOrCreate()
    import existingSparkSession.implicits._
    val data = Seq((inputSentence, analysedCategoryLabel))
    val emojiRdd = existingSparkSession.sparkContext.parallelize(data)
    val finalEmojiAnalyzedDataFrame = emojiRdd.toDF("sport", "value")
    finalEmojiAnalyzedDataFrame.write.format("com.springml.spark.sftp").option("delimiter",";").mode(SaveMode.Append).save("./src/main/resources/sportsData.csv") 

但此代码不起作用,我收到以下错误。

Exception in thread "main" java.lang.ClassNotFoundException: Failed to find data source: com.springml.spark.sftp.

要连续写入 csv 文件,我需要使用 com.springml.spark.sftp 吗?还有其他方法吗?如果这是我需要将此库导入添加到我在 scala 中的构建文件中的唯一方法?

【问题讨论】:

  • 为什么不直接使用.write.option("delimiter",";").mode(SaveMode.Append).csv("path")
  • 线程“主”org.apache.hadoop.fs.ParentNotDirectoryException 中的异常:父路径不是目录:文件:我收到此错误

标签: scala dataframe csv apache-spark


【解决方案1】:

不可能跨多个分区保存到单个文件,因为 Spark 旨在成为分布式处理库并写入共享文件系统

也就是说输出路径需要是目录

否则,您需要将数据框收集到行对象,然后使用非 Spark 方法写入/追加到单个本地文件

【讨论】:

    猜你喜欢
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    相关资源
    最近更新 更多