如何将 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
所述继续合并
我有一个使用“客户”变量的 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