> val a=spark.sql(select max(CID) as C_ID from AAA
> val b=spark.sql(select * from NST where C_ID= ' ')
>
我必须将C_ID值传递给以下数据帧中的where条件作为参数。 有什么建议我该怎么做?我不应该使用子查询的概念,因为数据是数以百万计的 联接中有多个表,在这里我提到了示例查询。
答案 0 :(得分:1)
使用 variable
将sql结果存储到mkString
中,然后在 where
子句中使用变量。
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|
#+----+---+