gpt4 book ai didi

apache-spark - spark sql什么时候可以用symbol来表示列?

转载 作者:行者123 更新时间:2023-12-04 04:51:32 25 4
gpt4 key购买 nike

考虑 DataFrame 上的基本 groupBy 表达式:

val groupDf  = rsdf.groupBy("league","vendor").agg(mean('league),mean('vendor))

groupBy 部分很好:它使用字符串作为列名。然而 agg (/mean) 不是 - 因为这里显然不支持 Symbol

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

最佳答案

简短的回答是从不。没有直接支持SymbolsDataFrame方法。

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

Symbols 起作用的唯一原因是从 SymbolColumn 的隐式转换 SQLImplicits.implicits .

导入后,只要需要 Column,编译器就可以转换 Symbol,包括 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|
+------+------+-----------+-----------+

关于apache-spark - spark sql什么时候可以用symbol来表示列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45465453/

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