如何进行groupby排名并将其作为列添加到spark scala中的现有Dataframe中?

q43xntqr  于 2021-05-19  发布在  Spark
关注(0)|答案(1)|浏览(353)

目前我正在做的是:

val new_df= old_df.groupBy("column1").count().withColumnRenamed("count","column1_count")

  val new_df_rankings = new_df.withColumn(
    "column1_count_rank",
    dense_rank()
      .over(
        Window.orderBy($"column1_count".desc))).select("column1_count","column1_count_rank")

但实际上,我要做的只是在原始df(旧的df)中添加一个名为“column1\u count\u rank”的列,而不需要经过所有这些中间步骤并合并回来。
有办法吗?
谢谢,祝你今天愉快!

zsbz8rwp

zsbz8rwp1#

当您应用聚合时,将会有一个计算结果,它将创建新的Dataframe。你能给出一些输入输出示例吗 old_df.groupBy("column1").agg(count("*").alias("column1_count")) .withColumn("column1_count_rank",dense_rank().over(Window.orderBy($"column1_count".desc))) .select("column1_count","column1_count_rank")

相关问题