Ошибка верна, так как AVG возвращает тип данных DOUBLE
Seq("France", "Germany").toDF.agg(avg(lit(null)).alias("col1")).printSchema

, где MAX возвращает тип как ноль
Seq("France", "Germany").toDF.agg(max(lit(null)).alias("col1")).printSchema

поэтому, когда вы пишете фрейм данных, в котором MAX выдает ошибку, если вы хотите сохранить фрейм данных с max, явно преобразуйте его в другой тип
Seq("France", "Germany").toDF.agg(max(lit(null)).alias("col1").cast(DoubleType)).write.csv("path")