可能是一个非常愚蠢的问题,但对于:
val ds3 = ds.groupBy($"ip")
.avg("humidity")
目前尚不清楚如何对于数据集而不是数据帧,如何像即时使用别名一样重命名列。我尝试了一些方法,但无济于事。尝试时没有错误,但没有效果。
我希望"avg_humidity"作为列名。
扩展问题,如果我发出:
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*)
返回一个RelationalGroupedDataset
。
avg(colNames: String*)
的返回类型是DataFrame
,因此通过使用as(alias: String)
,您只需将别名分配给新的数据帧,而不是列。
因此,有关重命名数据帧中的列的讨论在这里。