Utilisez collect_list et collect_set dans Spark SQL
Selon la docsle collect_set
et collect_list
fonctions devraient être disponibles dans Spark SQL. Cependant, je ne peux pas le faire fonctionner. Je suis en cours d'exécution Étincelle 1.6.0 à l'aide d'un Docker image.
Je suis en train de le faire en Scala:
import org.apache.spark.sql.functions._
df.groupBy("column1")
.agg(collect_set("column2"))
.show()
Et recevez l'erreur suivante lors de l'exécution:
Exception in thread "main" org.apache.spark.sql.AnalysisException: undefined function collect_set;
Aussi essayé à l'aide de pyspark
mais il échoue également. Les docs de l'état de ces fonctions sont des alias de la Ruche UDAFs, mais je ne peux pas comprendre pour activer ces fonctions.
Comment résoudre ce problème? Merci!
source d'informationauteur Joost Farla | 2016-02-20
Vous devez vous connecter pour publier un commentaire.
Spark 2.0+:
SPARK-10605 introduit natif
collect_list
etcollect_set
mise en œuvre.SparkSession
avec la Ruche de soutien ou deHiveContext
ne sont plus requis.Spark 2.0-INSTANTANÉ (avant 2016-05-03):
Vous devez activer la Ruche de soutien pour une
SparkSession
:En Scala:
En Python:
Spark < 2.0:
Pour être en mesure d'utiliser la Ruche Udf (voir https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF) vous avez l'utilisation de Spark construit avec de la Ruche (ce qui est déjà prévu lorsque vous utilisez pré-construit binaires ce qui semble être le cas ici) et initialiser
SparkContext
à l'aide deHiveContext
.En Scala:
En Python: