运行此代码时:
df
.select($"CALC_DATE", $"ENGINE_SERIES", $"program_group_name")
.groupBy($"CALC_DATE", $"ENGINE_SERIES", $"program_group_name")
.orderBy($"CALC_DATE".desc)
.count()
.withColumnRenamed("count", "Actual_count")
.show()
我得到以下错误:
error: value orderBy is not a member of org.apache.spark.sql.RelationalGroupedDataset
2条答案
按热度按时间yhqotfr81#
如错误消息中所述,
orderBy
不能用于RelationalGroupedDataset
.这个
groupBy
函数不返回基本DataFrame
就像where
,select
甚至orderBy
功能。它返回一个RelationalGroupedDataset
只能对其应用aggregation函数,例如count
在你的例子中。然后聚合函数将返回一个DataFrame
你将能够排序。如果是你的话,就换一个
orderBy
以及count
它会起作用的。n9vozmp42#
基本上groupby将返回relationalgroupeddataset,这意味着与包含一些组的数据集的关系。现在,要将此relationalgroupeddataset转换为dataframe,您需要为此数据集的每个组指定至少一个聚合。现在,这个聚合可以是类似count、sum的任何形式,也可以使用.agg()方法对relationalgroupeddataset应用多个聚合。将此relationalgroupeddataset转换为普通Dataframe后,就可以在此Dataframe上使用普通orderby和其他函数。