需求:
需要将 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的目录