Spark Scala获取每日use最大值时遭遇select重载方法错误
解决按日期分组取use字段最大值的问题
错误原因
你之前的代码报错,一是select方法不允许混合传入字符串列名(比如"date")和Column对象(比如max($"use")),二是核心问题是没做分组操作——要按日期聚合,必须先对date字段分组,再执行聚合计算。
正确代码(Scala DataFrame API)
import org.apache.spark.sql.functions.max df.groupBy("date") .agg(max($"use").alias("max_use")) .show()
代码说明
groupBy("date"):按date字段对数据分组,把相同日期的行归为一组agg(max($"use").alias("max_use")):对每个分组执行聚合操作,计算use字段的最大值,并用alias给结果列起一个清晰的名字max_useshow():输出结果
预期输出
针对你的测试数据,所有行的date都是2015-01-06,输出会是:
+----------+------------+ | date| max_use| +----------+------------+ |2015-01-06|30065.234225| +----------+------------+
内容的提问来源于stack exchange,提问作者James_B
相关产品推荐
相关产品推荐

