2017-03-16 37 views
0

如何將變量傳遞給Spark數據框過濾器和IF條件。如何在Spark數據框中綁定/傳遞變量

我是從星火數據框中

val data=sqlContext.sql("Select Col from Tables1") 

我想通過這個變量數據到數據幀的過濾器選項填充值。

我嘗試了下面的一個,但它是空的價值。

val df=df1.filter($"Column1"===data) and 
val df=df1.filter($"Column1"===$data) 

兩者都不起作用。

我嘗試在IF語句中使用。

if $data="String" -- How to pass in IF . 

請指導我。

回答

0

表達之後,可以用:

df1.filter($"Column1=$data") 

字符串引號是必需的:

df1.filter($"Column1='$data'") 
0

如果我理解你的問題,你試圖篩選數據幀。 你可以這樣說:

val df = sqlContext.sql("Select Col from Tables1") 
df.filter(df("Col") === "100") 

這裏您篩選數據,只保留線與列=「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"))