代码之家  ›  专栏  ›  技术社区  ›  Kaushik Ghosh

最佳方法在PySpark中遍历数据帧的行

  •  0
  • Kaushik Ghosh  · 技术社区  · 2 年前

    我有一个要求,我需要根据卡成员(CM)编号对数据帧进行排序,然后遍历每一行,并根据几列的值进行一些操作。因此,我正在寻找最好的方法来迭代/循环数据帧,并并行进行以优化性能。

    注意,我使用的是PySpark。

    我也读过类似的文章,大多数人都说要将collect()/toLocalIterator()操作作为直接解决方案,但我不想这样做,因为这会将整个数据加载到驱动程序节点中,而且每次运行时我的数据帧大小实际上可能相当大(约50Gb)。因此,通过多个帖子,我想出了两种方法。有人能帮我验证哪种方法应该是最好的吗

    1-)从df中找到不同的CM编号列表,然后使用Select为特定的CM值选择特定的行,然后对其进行收集。这仍将在驱动程序节点中加载数据,但卷仍将小于整个卷。执行所需操作并重复上述步骤,直到CM的不同列表结束。

    2-)在根据CM编号对数据帧进行排序后使用rdd.map(custom_function)。但不确定我是否能通过这个实现并行。

    感谢任何关于该方法的建议

    0 回复  |  直到 2 年前