在 Spark 中使用 partitionBy 保存 CSV 文件 [重复]

Posted

技术标签:

【中文标题】在 Spark 中使用 partitionBy 保存 CSV 文件 [重复]【英文标题】:Saving CSV file with partitionBy in Spark [duplicate] 【发布时间】:2016-02-09 02:40:33 【问题描述】:

我正在尝试将数据框保存为按列分区的 CSV 文件。

val schema = new StructType(
      Array(
        StructField("ID",IntegerType,true),
        StructField("State",StringType,true),
        StructField("Age",IntegerType,true)
      )
)

val df = sqlContext.read.format("com.databricks.spark.csv")
        .options(Map("path" -> filePath).schema(schema).load()

df.write.partitionBy("State").format("com.databricks.spark.csv").save(outputPath)

但是输出没有保存任何分区信息。看起来 partitionBy 被完全忽略了。没有错误。如果我尝试使用镶木地板格式,它会起作用。

df.write.partitionBy("State").parquet(outputPath)

我在这里错过了什么?

【问题讨论】:

【参考方案1】:

partitionBy 支持必须作为给定数据源的一部分来实现,目前 Spark CSV 不支持 (v1.3)。见:https://github.com/databricks/spark-csv/issues/123

【讨论】:

没有关于是否/何时可用的 cmets。在此期间,有什么想法可以有效地编写此应用程序代码吗? 看起来 csv 解析将成为 2.x 中核心 Spark SQL 的一部分... 您能否提供有关此问题的发行说明或博客的链接?想了解更多信息。谢谢! 恐怕我只能看到我在 cmets 中提供的指向***.com/a/35372282/1560062的链接

以上是关于在 Spark 中使用 partitionBy 保存 CSV 文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 spark DF 中使用 partitionBy 后是不是可以重新分区?

为啥在 Spark 中重新分区比 partitionBy 快?

spark:区分大小写的 partitionBy 列

Spark中repartition和partitionBy的区别

spark中partitionBy和groupBy有啥区别

spark-partitionBy