Spark Dataframe的where子句可以将变量作为参数吗?

时间:2019-01-10 00:29:36

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

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

val a = """col("foo")==="bar" || col("abc")==="def""""
val df = df_.where(a)
org.apache.spark.sql.catalyst.parser.ParseException:

== SQL ==
col("foo")==="bar" || col("abc")==="def"
---------------^^^

如果我尝试不使用变量,它将起作用。

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

2 个答案:

答案 0 :(得分:3)

如果expression是字符串,则应为语法上有效的SQL,即

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

答案 1 :(得分:3)

不是class Production { protected: int Servers = 0; public: bool IsValInRegistry(const std::string& regVal); }; bool Production::IsValInRegistry(const std::string& regVal) { #ifdef USE_MOCK_PRODUCTION return true; #else HRESULT hr = GOOD; hr = WinSysCallToRegistry(regVal); if (HR) return true; else return false; #endif } ,而是可以将String条件另存为where类型的值,如下所示:

Column