【发布时间】:2017-05-19 22:07:35
【问题描述】:
我为字符串创建了一个自定义Aggregator[]。
我想将它应用于DataFrame 的所有列,其中所有列都是字符串,但列号是任意的。
我一直在写正确的表达方式。我想写这样的东西:
df.agg( df.columns.map( c => myagg(df(c)) ) : _*)
考虑到各种接口,这显然是错误的。
我查看了RelationalGroupedDataset.agg(expr: Column, exprs: Column*) 代码,但我不熟悉表达式操作。
有什么想法吗?
【问题讨论】:
-
请出示您的聚合代码。并解释你想要做什么。
-
@AssafMendelson,实际上我们计划为各种数据类型的各种统计数据创建许多自定义聚合器。我从一个聚合器开始,以获得最短和最长的字符串: class ShortestLongestAggregator() extends Aggregator[String, (String, String), (String, String)] 。现在我想要一个任意数据框的所有列的所有(最短,最长)对(假设它只有字符串列)。
标签: apache-spark apache-spark-sql aggregate-functions user-defined-functions