scala spark dataframe 按不同日期写入不同的csv文件

需求:

需要将 spark 最终计算结果 dataframe 按日期写到对应的 csv文件。日期字段 date_ 样例数据如下 :

2020-5-10 23:34:28

2020-12-9 23:34:28

2020-5-1 3:34:28

解决思路:

使用算子 

repartition(partitionExprs: Column*)

具体代码:

1,dataframe 结果增加列 partition_date:

substr(date_,0,instr(date_,' ')) partition_date  // 把日期从 date_ 字段截取出来作为一个新的字段 partition_date

2,基于新增列 partition_date 分区:

dataframe.repartition(new Column("partition_date"))

3,删除新增的列后再写为 csv 文件:

dataframe.repartition(new Column("partition_date")) 
  .drop("partition_date")
  .write.mode("overwrite")
  .option("mapreduce.fileoutputcommitter.marksuccessfuljobs","false") // 不需要 success_ 文件
  .csv(outputPath) // outputPath 是输出csv的目录

你可能感兴趣的:(spark,scala,spark,csv,scala)