如何在Spark数据帧中绑定/传递varibles

时间:2017-03-16 10:59:30

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

如何将变量传递给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 .

请指导我。

2 个答案:

答案 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"))