ошибка: значение orderBy не является членом организации apache .spark. sql .RelationalGroupedDataset - PullRequest
1 голос
/ 09 июля 2020

При запуске этого кода:

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 ]

2 голосов
/ 09 июля 2020

Как упоминалось в сообщении об ошибке, orderBy нельзя использовать в RelationalGroupedDataset.

Функция groupBy не возвращает базовый c DataFrame как where, select или даже orderBy функций. Он возвращает RelationalGroupedDataset, к которому вы можете применять только функции агрегирования, такие как count в вашем примере. Затем функция агрегации вернет DataFrame, который вы сможете отсортировать.

В вашем случае просто переключите orderBy и count, и он будет работать.

0 голосов
/ 10 июля 2020

Обычно GroupBy возвращает RelationalGroupedDataset, что означает связь с набором данных, который содержит некоторые группы. Теперь, чтобы преобразовать этот RelationalGroupedDataset в Dataframe, вам необходимо указать как минимум одно агрегирование для каждой группы этого набора данных. Теперь эта агрегация может быть чем угодно, например count, sum, или вы также можете применить множественную агрегацию, используя метод .agg () для RelationalGroupedDataset. После преобразования этого RelationalGroupedDataset в обычный Dataframe вы сможете использовать обычный orderBy и другие функции в этом Dataframe.

...