Dataframe 如何在下一个查询中使用第一个查询结果或在下一个数据帧中使用第一个数据帧结果

Dataframe 如何在下一个查询中使用第一个查询结果或在下一个数据帧中使用第一个数据帧结果,dataframe,apache-spark,caching,pyspark,Dataframe,Apache Spark,Caching,Pyspark,我对spark非常陌生,我尝试从第一个查询中获取结果,并在下一个查询中使用这些结果。但是得到了错误 %pyspark import sys from pyspark.context import SparkContext from pyspark.sql import SQLContext from pyspark import * sc = SparkContext.getOrCreate() sqlContext = SQLContext(sc) datasource0 = glueCon

我对spark非常陌生,我尝试从第一个查询中获取结果,并在下一个查询中使用这些结果。但是得到了错误

%pyspark
import sys
from pyspark.context import SparkContext
from pyspark.sql import SQLContext
from pyspark import *

sc = SparkContext.getOrCreate()
sqlContext = SQLContext(sc)
datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "adventure", table_name = "employee")

empDF = datasource0.toDF().where("age=40 and dept=10")
empDF.createOrReplaceTempView("empDF")

datasource1 = glueContext.create_dynamic_frame.from_catalog(database = "adventure", table_name = "dept")
deptDF = datasource1.toDF()
deptDF.createOrReplaceTempView("deptDF")

queryDF = sqlContext.sql("select * rom empDF e join deptDF d on e.id = d.id and d.manag=5")

datasource2 = glueContext.create_dynamic_frame.from_catalog(database = "adventure", table_name = "salary")
salDF = datasource2.toDF()
salDF.createOrReplaceTempView("salDF")
现在我想加入queryDF和salDF,但它给了我一个错误,说查询未找到。如何将第一个查询的结果保存到表中,以便在第二个查询中使用

finaDF = sqlContext.sql("select * rom queryDF e join salDF d on e.id = d.id").show()

您可以使用pyspark在python中直接实现这一点

在你的情况下,这将是:

finaDF = deptDF.join(salDF, "id")

我想如果我只是在身份证问题上加入谈判桌,它应该会起作用。但我在该查询中还有一些条件和子查询,例如finadf=sqlContext.sqlselect a,b,c,case stmt,d来自select e.*,case stmt来自queryDF e在e.id=d.id上加入salDF d