如何将变量传递给Spark数据帧过滤器和IF条件。
我从Spark数据框填充值
val data=sqlContext.sql("Select Col from Tables1")
我想将此变量数据传递给dataframe过滤器选项。
我尝试了下面的一个,但它是空值。
val df=df1.filter($"Column1"===data) and
val df=df1.filter($"Column1"===$data)
两者都不起作用。
我尝试在IF语句中使用。
if $data="String" -- How to pass in IF .
请指导我。
答案 0 :(得分:0)
可以使用以下表达式:
df1.filter($"Column1=$data")
需要字符串引号:
df1.filter($"Column1='$data'")
答案 1 :(得分:0)
如果我理解您的问题,您会尝试过滤数据框。 你可以这样做:
val df = sqlContext.sql("Select Col from Tables1")
df.filter(df("Col") === "100")
在此过滤数据,只保留Col =" 100"的行。 但是" 100"是一个常数。 显然,您希望使用来自其他数据帧的值进行过滤。
您必须使用join
。
val data = sqlContext.sql("Select Col from Data")
val df1 = sqlContext.sql("Select id, Col from Table1")
val df = df1.join(data, df1("Col") === data("Col"))