Как передать значение из одного кадра данных в другой? - PullRequest
0 голосов
/ 04 марта 2020
> val a=spark.sql(select max(CID) as C_ID from AAA 
> val b=spark.sql(select * from  NST where C_ID= ' ')
> 

Я должен передать значение C_ID условию где в нижнем фрейме данных в качестве параметра. Любые предложения, как я могу это сделать? я не должен использовать концепцию подзапроса, так как данные исчисляются миллионами, а в соединениях есть несколько таблиц, здесь я упомянул пример запроса.

1 Ответ

1 голос
/ 04 марта 2020

Сохраните sql результат в variable, используя 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|
#+----+---+
...