Apache spark 什么时候可以使用符号表示spark sql中的列?

Apache spark 什么时候可以使用符号表示spark sql中的列?,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,考虑数据帧上的基本groupBy表达式: val groupDf = rsdf.groupBy("league","vendor").agg(mean('league),mean('vendor)) groupBy部分很好:它使用字符串作为列名。然而,agg(/mean)不支持,因为这里显然不支持符号 我想知道为什么Symbol在这里不起作用,以及它们在Spark SQL中何时被允许使用。简单的答案是从不。没有直接支持符号的DataFrame方法 长答案是无处不在,Spark编译器期望列,但

考虑
数据帧上的基本
groupBy
表达式:

val groupDf  = rsdf.groupBy("league","vendor").agg(mean('league),mean('vendor))
groupBy
部分很好:它使用字符串作为列名。然而,
agg
(/
mean
)不支持,因为这里显然不支持
符号


我想知道为什么
Symbol
在这里不起作用,以及它们在Spark SQL中何时被允许使用。

简单的答案是从不。没有直接支持符号的
DataFrame
方法

长答案是无处不在,Spark编译器期望
,但您需要范围内的其他对象

符号工作的唯一原因是提供了从
Symbol
Column
的隐式转换

一旦导入,编译器将能够在需要
时强制转换
符号
,包括
agg
(隐式在范围内):

import spark.implicits._
import org.apache.spark.sql.functions._

val df = Seq((1, 2)).toDF("league", "vendor")

df.groupBy("league","vendor").agg(mean('league),mean('vendor)).show

+------+------+-----------+-----------+                                         
|league|vendor|avg(league)|avg(vendor)|
+------+------+-----------+-----------+
|     1|     2|        1.0|        2.0|
+------+------+-----------+-----------+