De acuerdo con los documentos , las funciones collect_set
y collect_list
deberían estar disponibles en Spark SQL. Sin embargo, no puedo hacer que funcione. Estoy ejecutando Spark 1.6.0 usando una imagen Docker .
Estoy tratando de hacer esto en Scala:
import org.apache.spark.sql.functions._ df.groupBy("column1") .agg(collect_set("column2")) .show()
Y reciba el siguiente error en tiempo de ejecución:
Exception in thread "main" org.apache.spark.sql.AnalysisException: undefined function collect_set;
También lo probé usando pyspark
, pero también falla. Los documentos indican que estas funciones son alias de UDAF de Hive, pero no me puedo imaginar para habilitar estas funciones.
¿Cómo arreglar esto? Gracias!
Spark 2.0+ :
SPARK-10605 presentó la recostackción nativa collect_list
y la implementación de collect_set
. SparkSession
con Hive support o HiveContext
ya no son necesarios.
Spark 2.0-SNAPSHOT (before 2016-05-03) :
SparkSession
habilitar el soporte de Hive para una SparkSession
determinada:
En Scala:
val spark = SparkSession.builder .master("local") .appName("testing") .enableHiveSupport() // <- enable Hive support. .getOrCreate()
En Python:
spark = (SparkSession.builder .enableHiveSupport() .getOrCreate())
Spark <2.0 :
Para poder usar las UDF de Hive (consulte https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF ), usted ha utilizado Spark con soporte Hive (esto ya está cubierto cuando usa binarios precomstackdos parece ser el caso aquí) e inicializar SparkContext
usando HiveContext
.
En 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)