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

时间:2017-09-19 15:06:06

标签: apache-spark spark-dataframe pyspark-sql

我的数据如下所示

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

2 个答案:

答案 0 :(得分:4)

如果我正确理解了这个问题,你真正想做的就是在数据帧中进行分区。

我建议你这样做

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

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

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

答案 1 :(得分:0)

是的,您可以在此处运行循环,因为它不是数据框上的嵌套操作。 不允许对RDD或Data框架进行嵌套操作,因为Spark Context不是Serializable。