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 中的列的讨论是 。
可能是一个非常愚蠢的问题,但是对于:
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 中的列的讨论是