【问题标题】:Can I use loops in Spark Data frame我可以在 Spark 数据框中使用循环吗
【发布时间】:2018-02-28 10:37:57
【问题描述】:

我的数据如下图

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

【问题讨论】:

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


【解决方案1】:

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

我建议这样做

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

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

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

【讨论】:

  • 你是对的。分区解决了我的问题。谢谢你,阿维舍克
  • 有什么办法可以控制分区内形成的部分文件的数量?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2020-03-04
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    相关资源
    最近更新 更多