gpt4 book ai didi

apache-spark - 在 Spark SQL 中使用 collect_list 和 collect_set

转载 作者:行者123 更新时间:2023-12-03 15:18:11 26 4
gpt4 key购买 nike

根据docs , collect_setcollect_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 的别名,但我不知道启用这些函数。

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

最佳答案

Spark 2.0+ :

SPARK-10605引进本土collect_listcollect_set执行。 SparkSession使用 Hive 支持或 HiveContext不再需要。

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

您必须为给定的 SparkSession 启用 Hive 支持。 :

在斯卡拉:

val spark = SparkSession.builder
.master("local")
.appName("testing")
.enableHiveSupport() // <- enable Hive support.
.getOrCreate()

在 Python 中:

spark = (SparkSession.builder
.enableHiveSupport()
.getOrCreate())

Spark < 2.0 :

为了能够使用 Hive UDF(参见 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF),您使用了带有 Hive 支持的 Spark(当您使用预构建的二进制文件时已经涵盖了这一点,这里似乎是这种情况)并初始化 SparkContext使用 HiveContext .

在斯卡拉:

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)

关于apache-spark - 在 Spark SQL 中使用 collect_list 和 collect_set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35528966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com