'Spark SQL中'col(带有刻度)表达式是什么意思?

时间:2019-01-03 11:55:34

标签: scala apache-spark apache-spark-sql

以下语法:

def func0(x: Int => Int, y: Int)(in: DataFrame): DataFrame = {
    in.filter('col > x(y))
}  

无法放置'col。 “ col”不起作用,而“ col”在以下代码中起作用:

def func1(x: Int)(in: DataFrame): DataFrame = {
    in.selectExpr("col", s"col + $x as col1")
}

'col表示?

数据框示例只有一个列col,如果2或3列怎么办?显然这里缺少一些东西。告诉我这很简单。

1 个答案:

答案 0 :(得分:2)

'col是一种引用名为col的列的方法,与$"col"col("col")相同,具有名为col的列有点让人困惑

它在Spark 2.3中为我工作

具有列号的示例

df.show
+------+------+
|letter|number|
+------+------+
|     a|     1|
|     b|     2|
+------+------+

df.filter('number >1).show
+------+------+
|letter|number|
+------+------+
|     b|     2|
+------+------+

与其他表达式相同

import spark.implicits._
df.filter($"number" >1).show

import org.apache.spark.sql.functions
df.filter(col("number") >1).show