2

我有一个类似于以下结构的数据集:

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.csvdate

我需要做什么:

但是,当我使用 时,它只会在文件夹中.format("com.crealytics.spark.excel")创建一个名为的普通文件,并且不会从最终文件中删除 partitioned(date) 列。这是否意味着它没有在“日期​​”列上进行分区?创建的文件的完整路径是. 请注意,它使用文件 sales 覆盖文件“sales” 。salessaveLoc/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

谢谢。

4

0 回答 0