问题
运行一系列结构流作业并写文件槽第10次运行似乎比前一作业慢
因果
文件槽创建spark-metadata文件夹目标路径元数据文件夹存储每批信息, 包括文件批量需要它来提供文件汇流完全一致保证默认时,十批中前九批数据文件压缩成单文件/
求解
有三个可能的解决方案选择最适合你状况的
- 选项1:在生成环境内缓解问题,最小代码修改,但保留较少元数据
- 选项2:推荐可切换Delta表这是一种良好的长期解决办法
- 选项3:建议管道不要求完全单词或下游处理重复
选项1:短期元数据保留时间
元数据文件夹随时间变大默认宽放输出文件最长保留时间超过保留段的文件自动排除,从而限制元数据文件夹中文件数更少文件元数据文件夹表示压缩耗时更少
设置保留段时写流数据Frame到文件槽
ython检验点=目标路径= 保留区= '#您可以提供值字符串格式 时数或日数举个例子 12h7d默认df.writeStream.format(json').mode
选项2:使用三角洲表作为汇
三角洲表不使用spark_metadata文件夹提供完全一致语义
选项3:使用分页批量
分页批量不创建spark_metadata文件夹写入水槽