Comment dois-je appeler une fonction sur une Étincelle DataFrame à l'aide de JAVA?

Question similaire comme ici, mais n'avez pas assez de points pour commentaire.

Selon la dernière Étincelle la documentation un udf peut être utilisé de deux manières différentes, l'une avec SQL et un autre avec un DataFrame. J'ai trouvé plusieurs exemples de comment utiliser un udf avec sql, mais n'ont pas été en mesure de trouver tout sur la façon d'utiliser un udf directement sur un DataFrame.

La solution fournie par l'o.p. sur la question ci-dessus utilise __callUDF()__ qui est _deprecated_ et sera supprimée dans Spark 2.0 selon l'Étincelle Java documentation de l'API. Là, il dit:

", car il est redondant avec l'udf()"

donc ce qui veut dire que je devrais être en mesure d'utiliser __udf()__ cal un de mes udf, mais je ne peux pas comprendre comment le faire. Je n'ai pas trébuché sur quelque chose qui décrit la syntaxe de Java-Spark programmes. Ce qui me manque?

import org.apache.spark.sql.api.java.UDF1;
.
.    
UDF1 mode = new UDF1<String[], String>() {
    public String call(final String[] types) throws Exception {
        return types[0];
    }
};

sqlContext.udf().register("mode", mode, DataTypes.StringType);
df.???????? how do I call my udf (mode) on a given column of my DataFrame df?
  • Il n'est pas. Vérifiez soigneusement signatures 🙂 un exemple de code? UDF + données? La mise en forme?
  • Ajout d'un code de clarifier ce que je vous demande. Comme pour la partie plaignante, j'ai un sentiment tenace que je ne suis pas en train de faire. Il ne devrait pas prendre des heures pour comprendre comment faire les choses en Java-Étincelle. Je pense que je suis absent quelque chose, du livre(s), de la documentation, quelque part, une source de connaissances qui feront les indices que je reçois de mon IDE suffisant pour faire les choses sans avoir à google pendant des heures. Tout ce que j'ai trouver est de Scala et il n'est pas clair du tout pour moi comment faire la même chose en Java.
  • Eh bien, techniquement parlant Scala classes sont valables classes Java. Il désigne les présentes peuvent être utilisées directement en Java. Le problème est que la Scala est beaucoup plus riche langage que Java. Cela signifie que beaucoup de choses ne peut pas être fait facilement sans déballer tous de la Scala de la magie.
  • vous me dites que je n'ai besoin de se déplacer à la Scala.. il semble bien que ce serait un meilleur investissement de temps que de continuer à essayer de chausse-pied de la bougie dans le code Java. Je vous remercie.
  • Pas nécessairement, mais il peut être plus facile pour vous que de traiter avec Scala internes.
InformationsquelleAutor Kai | 2016-02-11