我正在运行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")
答案 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