2016-02-09 74 views
0

我试图将一个数据框保存为按列分区的CSV文件。在Spark中使用partitionBy保存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支持必须作为给定数据源的一部分来实现,因为现在(v1.3)在Spark CSV中不受支持。请参阅:https://github.com/databricks/spark-csv/issues/123

+0

对于何时/何时可用,没有评论。在此期间,有关如何有效执行此应用程序代码的任何想法? – Cheeko

+0

看起来csv解析将成为2.x中核心Spark SQL的一部分... – zero323

+0

您能否提供关于此发布说明或博客的链接?想了解更多信息。谢谢! – Cheeko