根据docs的说法,collect_set和collect_list函数应该在Spark SQL中可用。但是,我不能让它工作。我正在使用Docker image运行Spark 1.6.0。
我正尝试在Scala中做到这一点:
import org.apache.spark.sql.functions._
df.groupBy("column1")
.agg(collect_set("column2"))
.show() 并在运行时收到以下错误:
Exception in thread "main" org.apache.spark.sql.AnalysisException: undefined function collect_set; 我也尝试过使用pyspark,但也失败了。文档说明这些功能是Hive UDAF的别名,但我不知道如何启用这些功能。
如何解决这个问题?谢谢!
发布于 2016-02-21 05:12:57
Spark 2.0+
SPARK-10605引入了原生collect_list和collect_set实现。不再需要支持配置单元或HiveContext的SparkSession。
Spark 2.0-快照(2016-05-03之前)
您必须为给定的SparkSession启用配置单元支持
在Scala中:
val spark = SparkSession.builder
.master("local")
.appName("testing")
.enableHiveSupport() // <- enable Hive support.
.getOrCreate()在Python中:
spark = (SparkSession.builder
.enableHiveSupport()
.getOrCreate())火花< 2.0
为了能够使用Hive UDF(请参阅https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF),您必须使用Spark built with Hive support (当您使用预构建的二进制文件时已经介绍了这一点,这里似乎就是这种情况),并使用HiveContext初始化SparkContext。
在Scala中:
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.sql.SQLContext
val sqlContext: SQLContext = new HiveContext(sc) 在Python中:
from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)https://stackoverflow.com/questions/35528966
复制相似问题