x
> val a=spark.sql(select max(CID) as C_ID from AAA
> val b=spark.sql(select * from NST where C_ID= ' ')
>
I have to pass the the C_ID value to where condition in below data frame as parameter. Any suggestions how I can do this ? i should not use subquery concept as data is in millions and multiple tables are there in joins,here i have mentioned sample query.
Advertisement
Answer
Store sql result into a variable
using mkString
and then use the variable in your where
clause.
Example:
val df=Seq((1,"a"),(2,"b")).toDF("CID","n")
df.createOrReplaceTempView("AAA")
val df1=Seq((1,"a"),(2,"b")).toDF("C_ID","j")
df1.createOrReplaceTempView("NST")
val a=spark.sql("select max(CID) from AAA").collect()(0).mkString
spark.sql(s"select * from NST where C_ID=${a}").show()
#+----+---+
#|C_ID| j|
#+----+---+
#| 2| b|
#+----+---+