【发布时间】:2018-03-14 14:55:53
【问题描述】:
我们有一个用例,我们希望按列值对数据框进行分区,然后将每个分区写入单个文件。我做了以下事情来做同样的事情:
val df = spark.read.format("csv").load("hdfs:///tmp/PartitionKeyedDataset.csv")
df.repartition($"_c1")
df.rdd.saveAsTextFile("s3://dfdf/test1234")
当我这样做时:
df.rdd.partitions.size
我只得到 62 个分区。但是,该列的不同值是 10,214(通过运行 df.select("_c1").distinct.count 得到)
我不能使用:
df.write.partitionBy("_c1").save("s3://dfdf/test123")
因为这会在目标中创建具有分区名称的文件夹。我们不想要这个。我们只想转储文件。
【问题讨论】:
-
你只想要一个文件吗?
-
每个分区一个文件
标签: scala apache-spark