如何将 Pyspark FOR 循环输出附加到单个数据帧中 (spark.sql)

How to append Psypark FOR loop output into single dataframe (spark.sql)

我有一个使用“客户”变量的 pyspark for 循环。我想附加每个循环迭代的输出,以便最终数据帧具有 for 循环输出的所有行。除了追加部分,该代码有效。我也尝试过使用“union”但没有成功。

df = ""
df_output = []
customer=""

for customer in ['customer_abc', 'customer_xyz']:
  df = spark.sql(f"""
  SELECT sale, sum(amt) as total_sales
  FROM {customer}.salestable
  GROUP BY sale
  """).withColumn('Customer',lit(customer))
  df_output.append(df)
  
display(df_output)

使用df = df.union(df_output)代替df_output.append(df)

通过您的方法,您可以使用 reduce :

from functools import reduce
unioned_df = reduce(lambda x,y: x.union(y) ,df_output)

或者不是将 df_output 作为 list 启动,而是将其作为 spark dataframe 启动。然后按照@Luiz

所述继续合并