Как создать рейтинг groupby и добавить его в качестве столбца в существующий фрейм данных в spark scala?

#scala #apache-spark

#scala #apache-spark

Вопрос:

В настоящее время это то, что я делаю:

   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 (old_df) с именем «column1_count_rank», не проходя все эти промежуточные шаги и не объединяясь обратно.

Есть ли способ сделать это?

Спасибо и хорошего дня!

Ответ №1:

Когда вы применяете агрегацию, будет вычислительный результат, он создаст новый фрейм данных. Можете ли вы привести несколько примеров ввода и вывода

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")