Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 可以触发数据帧';s where子句将变量作为参数?_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

Scala 可以触发数据帧';s where子句将变量作为参数?

Scala 可以触发数据帧';s where子句将变量作为参数?,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我正在运行Spark Dataframe中的where子句。当我把字符串变量作为参数时,它会向我抛出一条错误消息。如果我复制该字符串并将其放入查询中,它就会工作 val a = """col("foo")==="bar" || col("abc")==="def"""" val df = df_.where(a) val df = df_.where(col("foo")==="bar" || col("abc")==="def") 如果我尝试不使用变量,它会工作 val a = """co

我正在运行Spark Dataframe中的where子句。当我把字符串变量作为参数时,它会向我抛出一条错误消息。如果我复制该字符串并将其放入查询中,它就会工作

val a = """col("foo")==="bar" || col("abc")==="def""""
val df = df_.where(a)
val df = df_.where(col("foo")==="bar" || col("abc")==="def")
如果我尝试不使用变量,它会工作

val a = """col("foo")==="bar" || col("abc")==="def""""
val df = df_.where(a)
val df = df_.where(col("foo")==="bar" || col("abc")==="def")

如果表达式是字符串,则它应该是语法上有效的SQL,即

"""foo = 'bar' AND abc = 'def'"""

不是作为
字符串
,但您可以将
where
条件保存为
类型值,如下所示:

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

val df = Seq(
  ("bar", "x"), ("zz", "y"), ("mm", "def")
).toDF("foo", "abc")

val cond: Column = col("foo") === "bar" || col("abc") === "def"

df.where(cond).show
// +---+---+
// |foo|abc|
// +---+---+
// |bar|  x|
// | mm|def|
// +---+---+