首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spark SQL中使用collect_list和collect_set

在Spark SQL中使用collect_list和collect_set
EN

Stack Overflow用户
提问于 2016-02-21 05:01:30
回答 1查看 27.9K关注 0票数 16

根据docs的说法,collect_setcollect_list函数应该在Spark SQL中可用。但是,我不能让它工作。我正在使用Docker image运行Spark 1.6.0。

我正尝试在Scala中做到这一点:

代码语言:javascript
复制
import org.apache.spark.sql.functions._ 

df.groupBy("column1") 
  .agg(collect_set("column2")) 
  .show() 

并在运行时收到以下错误:

代码语言:javascript
复制
Exception in thread "main" org.apache.spark.sql.AnalysisException: undefined function collect_set; 

我也尝试过使用pyspark,但也失败了。文档说明这些功能是Hive UDAF的别名,但我不知道如何启用这些功能。

如何解决这个问题?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-21 05:12:57

Spark 2.0+

SPARK-10605引入了原生collect_listcollect_set实现。不再需要支持配置单元或HiveContextSparkSession

Spark 2.0-快照(2016-05-03之前)

您必须为给定的SparkSession启用配置单元支持

在Scala中:

代码语言:javascript
复制
val spark = SparkSession.builder
  .master("local")
  .appName("testing")
  .enableHiveSupport()  // <- enable Hive support.
  .getOrCreate()

在Python中:

代码语言:javascript
复制
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中:

代码语言:javascript
复制
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.sql.SQLContext

val sqlContext: SQLContext = new HiveContext(sc) 

在Python中:

代码语言:javascript
复制
from pyspark.sql import HiveContext

sqlContext = HiveContext(sc)
票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35528966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档