Python 3.x 在pyspark-sql的join中重复使用相同的数据帧视图

Python 3.x 在pyspark-sql的join中重复使用相同的数据帧视图,python-3.x,pyspark,apache-spark-sql,Python 3.x,Pyspark,Apache Spark Sql,我在pyspark中有下面的代码。在代码中,我创建了3个子查询视图。然后,我将这3个视图连接在一起,形成最终的pyspark sql视图。我发现,如果我使用我在代码前面创建的daily_sku__t视图运行pyspark sql,它会抛出一个很长的错误,我在下面的顶行提供了这个错误。相反,如果我先将每日sku\t视图写入拼花地板,然后再将其读回,那么代码运行时不会出错。问题是,它使整个代码的写和读回时间更长。有没有一种方法可以解决这个问题,而不必执行写出来的动作?我尝试用不同的名称创建视图的另一

我在pyspark中有下面的代码。在代码中,我创建了3个子查询视图。然后,我将这3个视图连接在一起,形成最终的pyspark sql视图。我发现,如果我使用我在代码前面创建的daily_sku__t视图运行pyspark sql,它会抛出一个很长的错误,我在下面的顶行提供了这个错误。相反,如果我先将每日sku\t视图写入拼花地板,然后再将其读回,那么代码运行时不会出错。问题是,它使整个代码的写和读回时间更长。有没有一种方法可以解决这个问题,而不必执行写出来的动作?我尝试用不同的名称创建视图的另一个副本,但这也引发了一个错误

例如:

daily_sku_t.write.mode("overwrite")\
.parquet('s3://stuff/copy_daily_sku_t/')

copy_daily_sku_t=sqlContext.read.parquet('s3://stuff/copy_daily_sku_t/')

copy_daily_sku_t.createOrReplaceTempView("daily_sku_t")
代码:

错误顶部:

An error was encountered:
'Resolved attribute(s) _w5#7888 missing from discounts#7149,_w5# ....

在单个查询中,您可以通过使用“with”子句来实现它。 它看起来像下面这样

spark.sql("""
with tableA as select ..., --tableA subquery goes here
tableB as select ..., --tableB subquery goes here
tableC as select --tableC subquery goes here
//refer the temp tables created above in the following query
select * from tableD join tableA join tableB....""")

在执行
JOIN
操作之前,您是否尝试过设置
spark.conf.set(“spark.sql.crossJoin.enabled”,“true”)
spark.sql("""
with tableA as select ..., --tableA subquery goes here
tableB as select ..., --tableB subquery goes here
tableC as select --tableC subquery goes here
//refer the temp tables created above in the following query
select * from tableD join tableA join tableB....""")