我有一个类似于以下结构的数据集:
col_A col_B date
1 5 2021-04-14
2 7 2021-04-14
3 5 2021-04-14
4 9 2021-04-14
我正在尝试使用 Spark Java 中的以下代码将数据集写入 HDFS 中的文件。
Dataset<Row> outputDataset; // This is a valid dataset and works flawlessly when written to csv
/*
some code which sets the outputDataset
*/
outputDataset
.repartition(1)
.write()
.partitionBy("date")
.format("com.crealytics.spark.excel")
.option("header", "true")
.save("/saveLoc/sales");
正常工作案例:
当我通过 use.format("csv")
时,上面的代码会创建一个文件夹,其名称与传入date=2021-04-14
的路径中的名称完全相同。结束文件的完整路径是. 此外,该列已从文件中删除,因为它已被分区。/saveLoc/sales
.save()
/saveLoc/sales/date=2021-04-14/someFileName.csv
date
我需要做什么:
但是,当我使用 时,它只会在文件夹中.format("com.crealytics.spark.excel")
创建一个名为的普通文件,并且不会从最终文件中删除 partitioned(date) 列。这是否意味着它没有在“日期”列上进行分区?创建的文件的完整路径是. 请注意,它使用文件 sales 覆盖文件夹“sales” 。sales
saveLoc
/saveLoc/sales
此处描述了使用的 Excel 插件:https ://github.com/crealytics/spark-excel
在excel中写入时如何进行分区?换句话说,我怎样才能让它的行为与 csv 的情况完全一样?
使用的版本:
spark-excel: com.crealytics.spark-excel_2.11
scala: org.apache.spark.spark-core_2.11
谢谢。