【问题标题】:What does 'col (with tick) expression mean in Spark SQL?Spark SQL中的'col(带勾号)表达式是什么意思?
【发布时间】:2019-01-03 11:55:34
【问题描述】:

以下语法:

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 个列怎么办?显然在这里遗漏了一些东西。有件事告诉我这很简单。

【问题讨论】:

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


【解决方案1】:

'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

【讨论】:

  • 在性能方面使用$col 有区别吗?
  • 我不这么认为,只是 API 不同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多