Вы можете использовать groupBy и собирать функции. В зависимости от ваших потребностей, вы можете использовать список или установить et c.
df.groupBy(col("id")).agg(collect_list(col("Name"))
, если вам нужны повторяющиеся значения
df.groupBy(col("id")).agg(collect_set(col("Name"))
, если вы хотите уникальные значения