我可以在 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/
....
我的数据如下图
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/
....