像数据帧一样动态生成数据集别名列

问题描述 投票:0回答:1

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

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

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

我想要“ avg_humidity”作为列名。

扩展问题,如果我发出该怎么办:

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

如何处理?

apache-spark apache-spark-dataset
1个回答
1
投票

[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"))
© www.soinside.com 2019 - 2024. All rights reserved.