Я делаю некую агрегацию на созданном мною кадре данных. Вот шаги
val initDF = spark.read.format("csv").schema(someSchema).option("header","true").load(filePath).as[someCaseClass]
var maleFemaleDistribution = initDF.select("DISTRICT","GENDER","ENROLMENT_ACCEPTED","ENROLMENT_REJECTED").groupBy("DISTRICT").agg(
count( lit(1).alias("OVERALL_COUNT")),
sum(when(col("GENDER") === "M", 1).otherwise(0).alias("MALE_COUNT")),
sum(when(col("GENDER") === "F", 1).otherwise(0).alias("FEMALE_COUNT"))
).orderBy("DISTRICT")
Как бы то ни было, когда я выполняю printSchema на только что созданном DataFrame, я не вижу имен столбцов в качестве предоставленного мной псевдонима, вместо этого отображается
maleFemaleDistribution.printSchema
root
|-- DISTRICT: string (nullable = true)
|-- count(1 AS `OVERALL_COUNT`): long (nullable = false)
|-- sum(CASE WHEN (GENDER = M) THEN 1 ELSE 0 END AS `MALE_COUNT`): long (nullable = true)
|-- sum(CASE WHEN (GENDER = F) THEN 1 ELSE 0 END AS `FEMALE_COUNT`): long (nullable = true)
Где, как я ожидаю, имена столбцов будут
maleFemaleDistribution.printSchema
root
|-- DISTRICT: string (nullable = true)
|-- OVERALL_COUNT: long (nullable = false)
|-- MALE_COUNT: long (nullable = true)
|-- FEMALE_COUNT: long (nullable = true)
Мне нужна помощь, чтобы понять, почему Alias не обновляется в новом DF. И как я должен изменить код, чтобы отразить имена столбцов, упомянутые в Alias