Scala 使用DataSetsAPI在Spark中按键进行分区输出

Scala 使用DataSetsAPI在Spark中按键进行分区输出,scala,apache-spark,dataset,hdfs,partitioning,Scala,Apache Spark,Dataset,Hdfs,Partitioning,假设我有一个案例类的数据集,例如 case class Foo(colour: String, count: Int) val ds: Dataset[Foo] = sqlContext.createDataset(Seq( Foo("red", 10), Foo("red", 22), Foo("blue", 12) )) 如何将其保存到由其中一个字段(比如foo)分区的文件系统中,以便输出目录为: /my-path/foo=red/ /my-path/foo=blue/

假设我有一个案例类的数据集,例如

case class Foo(colour: String, count: Int)

val ds: Dataset[Foo] = sqlContext.createDataset(Seq(
  Foo("red", 10), 
  Foo("red", 22),
  Foo("blue", 12)
))
如何将其保存到由其中一个字段(比如foo)分区的文件系统中,以便输出目录为:

/my-path/foo=red/
/my-path/foo=blue/
内容如下

>cat/my path/foo=红色/* 10 22 >猫/我的路径/foo=蓝色/* 12 使用case类的字段名有没有一种简单的方法可以做到这一点?

目前是Spark 1.4+

ds.toDF().write.partitionBy("foo").text("/my-path")
从Spark 2.0开始,toDF可能会变得多余,因为API将被合并

对于其他格式,只需将文本更改为json或拼花