Selon le docs , le collect_set
et collect_list
les fonctions devraient être disponibles en Spark SQL. Cependant, je ne peux pas le faire fonctionner. J'exécute Spark 1.6.0 en utilisant un Image Docker .
J'essaie de faire ça à 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;
A également essayé en utilisant pyspark
, mais il échoue également. Les documents indiquent que ces fonctions sont des alias des UDAF Hive, mais je ne peux pas comprendre pour activer ces fonctions.
Comment régler ceci? Merci!
Spark 2.0 + :
SPARK-10605 introduit natif collect_list
et collect_set
la mise en oeuvre. SparkSession
avec support Hive ou HiveContext
ne sont plus nécessaires.
INSTANTANÉ Spark 2.0 (avant 2016-05-03):
Vous devez activer le support Hive pour un SparkSession
donné:
À Scala:
val spark = SparkSession.builder
.master("local")
.appName("testing")
.enableHiveSupport() // <- enable Hive support.
.getOrCreate()
En Python:
spark = (SparkSession.builder
.enableHiveSupport()
.getOrCreate())
Spark <2.0 :
Pour pouvoir utiliser les UDF Hive (voir https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+UDF ) vous avez utilisé Spark built avec le support Hive (ceci est déjà couvert lorsque vous utilisez des binaires pré-construits ce qui semble être le cas ici) et initialisez SparkContext
en utilisant HiveContext
.
À Scala:
import org.Apache.spark.sql.Hive.HiveContext
import org.Apache.spark.sql.SQLContext
val sqlContext: SQLContext = new HiveContext(sc)
En Python:
from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)