我的数据如下所示
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
答案 0 :(得分:4)
如果我正确理解了这个问题,你真正想做的就是在数据帧中进行分区。
我建议你这样做
df.write.partitionBy("Store").mode(SaveMode.Append).csv("..")
这会将数据帧写入几个分区,如
store=2/
store=1/
....
答案 1 :(得分:0)
是的,您可以在此处运行循环,因为它不是数据框上的嵌套操作。 不允许对RDD或Data框架进行嵌套操作,因为Spark Context不是Serializable。