问题1 一个batch运行时间过长
检查发现问题出现在merge写文件时间过长,一个batch本来应该是控制在1min。但项目上线到生产环境,检查spark streaming的job,发现数据在merge写入到数据湖时,往往超过1小时。继续排查,发现是一张表往往出现几百个小文件,影响数据写性能,故每天进行小文件合并操作。
-
. 优化小文件问题:
sqloptimize delta.`dbfs:/your_mount_path/`
-
增加分区:
pythondf = spark.read.format('delta').load("abfs:/your_history_path") df = df.withColumn('CDC_DATE', df['cdc_timestamp'].cast('date')) df.write.partitionBy('CDC_DATE').mode('overwrite').option('overwriteSchema', 'true').format('delta').save("abfs:/your_partitioin_path")