Spark 数据集别名列像数据框一样即时

Spark dataset alias column on-the-fly like for a dataframe

可能是一个非常愚蠢的问题,但是对于:

val ds3 = ds.groupBy($"ip")
            .avg("humidity") 

不清楚对于数据集,而不是数据框,我如何重命名列,就像使用动态别名一样。我尝试了几件事但无济于事。尝试时没有错误,但没有效果。

我想要"avg_humidity"作为col名。

扩展问题,如果我发出:

val ds3 = ds.groupBy($"ip")
            .avg() 

如何处理?

avg 不提供别名功能,您可能需要额外的 withColumnRenamed

val ds3 = ds.groupBy($"ip")
  .avg("humidity")
  .withColumnRenamed("avg(humidity)","avg_humidity")

您可以使用 .agg(avg("humidity").as("avg_humidity"))

val ds3 = ds.groupBy($"ip").agg(avg("humidity").as("avg_humidity"))

groupBy(cols: Column*)return一个RelationalGroupedDataset

avg(colNames: String*) 的 return 类型是 DataFrame,因此通过使用 as(alias: String),您只是将别名分配给新的 DataFrame,而不是分配别名列。

关于重命名 DataFrame 中的列的讨论是