【问题标题】:how to pass value from one dataframe to another dataframe?如何将值从一个数据帧传递到另一个数据帧?
【发布时间】:2020-06-16 08:35:48
【问题描述】:
> 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 条件。 有什么建议我该怎么做?我不应该使用子查询概念,因为数据以百万计,并且 连接中有多个表,这里我提到了示例查询。

【问题讨论】:

  • 您可以从第一个查询中 .collect() 并将其放在第二个查询 where 子句中

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


【解决方案1】:

使用 mkString 将 sql 结果存储到 variable,然后在 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|
#+----+---+

【讨论】:

    猜你喜欢
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    • 2021-07-02
    • 1970-01-01
    • 2021-10-09
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多