如何在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
在定义的组中是否有任何值span
,timestamp
哪些值低于阈值。我是否需要以不同的方式将UDAF写入上面粘贴的UDF?