错误:value orderby不是org.apache.spark.sql.relationalgroupeddataset的成员

2izufjch  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(913)

运行此代码时:

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
yhqotfr8

yhqotfr81#

如错误消息中所述, orderBy 不能用于 RelationalGroupedDataset .
这个 groupBy 函数不返回基本 DataFrame 就像 where , select 甚至 orderBy 功能。它返回一个 RelationalGroupedDataset 只能对其应用aggregation函数,例如 count 在你的例子中。然后聚合函数将返回一个 DataFrame 你将能够排序。
如果是你的话,就换一个 orderBy 以及 count 它会起作用的。

n9vozmp4

n9vozmp42#

基本上groupby将返回relationalgroupeddataset,这意味着与包含一些组的数据集的关系。现在,要将此relationalgroupeddataset转换为dataframe,您需要为此数据集的每个组指定至少一个聚合。现在,这个聚合可以是类似count、sum的任何形式,也可以使用.agg()方法对relationalgroupeddataset应用多个聚合。将此relationalgroupeddataset转换为普通Dataframe后,就可以在此Dataframe上使用普通orderby和其他函数。

相关问题