Apache spark 我可以在Spark数据帧中使用循环吗

Apache spark 我可以在Spark数据帧中使用循环吗,apache-spark,spark-dataframe,pyspark-sql,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

我的数据如下所示

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上下文不可序列化

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

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

我建议这样做

df.write.partitionBy("Store").mode(SaveMode.Append).csv("..")
这将把数据帧写入几个分区,如

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

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

我建议这样做

df.write.partitionBy("Store").mode(SaveMode.Append).csv("..")
这将把数据帧写入几个分区,如

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

您可以根据您的需要调整此解决方案:您可以根据您的需要调整此解决方案:您是正确的。分区解决了我的问题。谢谢,有什么方法可以控制分区内形成的零件文件的数量吗?检查这个问题是否正确。分区解决了我的问题。谢谢,有什么方法可以控制分区内形成的零件文件的数量吗?检查这个问题