Comment définir et utiliser un Définis par l'Utilisateur Fonction d'Agrégation dans Spark SQL?

Je sais comment écrire un fichier UDF Spark SQL:

def belowThreshold(power: Int): Boolean = {
        return power < -40
      }

sqlContext.udf.register("belowThreshold", belowThreshold _)

Puis-je faire quelque chose de similaire pour définir une fonction d'agrégation? Comment est-ce fait?

Pour le contexte, je veux exécuter la requête SQL suivante:

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

Il doit retourner quelque chose comme

Row(span1, false, T0)

Je veux que la fonction d'agrégation de me dire si il y a des valeurs pour opticalReceivePower dans les groupes définis par span et timestamp qui sont en dessous du seuil. Dois-je écrire mon udaf, nous différemment à l'UDF, j'ai collé ci-dessus?

InformationsquelleAutor Rory Byrne | 2015-08-19