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或拼花