我可以在 Spark 数据框中使用循环吗

Can I use loops in Spark Data frame

我的数据如下图

Store ID  Amount,...
1     1  10 
1     2  20
2     1  10
3     4  50

我必须为每个商店创建单独的目录

Store 1/accounts
ID  Amount
1   10
2   20

store 2/accounts directory:
ID Amount
1   10 

为此,我可以在 Spark 数据帧中使用循环吗?它在本地机器上工作。会不会是集群的问题

while storecount<=50:
    query ="SELECT * FROM Sales where Store={}".format(storecount)
    DF =spark.sql(query)
    DF.write.format("csv").save(path)
    count = count +1

是的,您可以在此处 运行 循环,因为它不是对数据框的嵌套操作。 不允许对 RDD 或数据帧进行嵌套操作,因为 Spark 上下文不可序列化。

如果我正确理解了问题,那么您真正想要做的是在数据帧中进行分区。

我建议这样做

df.write.partitionBy("Store").mode(SaveMode.Append).csv("..")

这会将数据帧写入多个分区,例如

store=2/
store=1/
....