【问题标题】:Range Partitioning in PysparkPyspark 中的范围分区
【发布时间】:2019-04-18 03:30:00
【问题描述】:

假设我有一个包含 1,000,000 个 ID 的数据集。我将如何按范围划分 100 个分区。我在 Scala 中看到了 RangePartitioner 类,但它似乎在 PySpark API 中不可用。

我有一个非常大的数据集,目前正在按唯一 ID 进行分区,但这会创建太多分区。我想知道 PySpark 中范围分区的最佳实践

df.write.partitionBy('unique_id').mode('overwrite').csv(file://test/)

这会将每个 id 放在自己的分区中。

我似乎在 PySpark 中找不到任何关于范围分区的文档。

【问题讨论】:

  • 您在寻找df.repartition(100, 'unique_id').write.mode('overwrite').csv('file:://test/')吗? docs
  • @pault 我将对此进行测试,但我正在寻找的是 id 的顺序是从 id 0 到 id 1000000。我希望将 DF 分区到 0-10000 的位置分区 10000-etc 以此类推。
  • 感谢您提供我正在寻找的文档 repartitionByRange!

标签: python apache-spark pyspark partitioning


【解决方案1】:

对于pyspark 2.4及以上版本,可以使用pyspark.sql.DataFrame.repartitionByRange

df.repartitionByRange(100, 'unique_id').write.mode('overwrite').csv('file:://test/')

【讨论】:

  • 如何在 pyspark rdd 级别做范围分区?
  • 在 .write() 之前说 'repartitionByRange' 有什么区别吗?即 df.repartitionByRange(n, col).write() 与 df.write().repartitionByRange(n, col)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 2022-07-20
  • 2022-09-27
  • 1970-01-01
相关资源
最近更新 更多