如何在Spark SQL中定义和使用用户定义的聚合函数?

如何在Spark SQL中定义和使用用户定义的聚合函数?

我知道如何在Spark SQL中编写UDF:

def belowThreshold(power: Int): Boolean = {
        return power < -40
      }sqlContext.udf.register("belowThreshold", belowThreshold _)

我可以做类似的定义聚合函数吗?这是怎么做到的?

对于上下文,我想运行以下SQL查询:

val aggDF = sqlContext.sql("""SELECT span, belowThreshold(opticalReceivePower), timestamp
                                    FROM ifDF
                                    WHERE opticalReceivePower IS NOT null
                                    GROUP BY span, timestamp
                                    ORDER BY span""")

它应该返回类似的东西

Row(span1, false, T0)

我希望聚合函数告诉我opticalReceivePower在定义的组中是否有任何值spantimestamp哪些值低于阈值。我是否需要以不同的方式将UDAF写入上面粘贴的UDF?


墨色风雨
浏览 455回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP