【问题标题】:Sorting after Repartitioning PySpark Dataframe重新分区 PySpark 数据帧后的排序
【发布时间】:2021-12-08 12:59:48
【问题描述】:

我们有一个巨大的文件,我们根据一列重新分区,例如,说它是STATE。现在似乎重新分区后,数据无法完全排序。我们正在尝试将最终文件保存为文本文件,但是现在加利福尼亚州首先出现,而不是列出的第一个州是阿拉巴马州。 OrderBy 运行重新分区后似乎没有效果。

df = df.repartition(100, ['STATE_NAME'])\
    .sortWithinPartitions('STATE_NAME', 'CUSTOMER_ID', 'ROW_ID')

【问题讨论】:

  • list 传递给repartition 不符合documentation
  • 哎呀。确定此代码的相同问题: df = df.repartition(100, 'STATE_NAME')\ .sortWithinPartitions('STATE_NAME', 'CUSTOMER_ID', 'ROW_ID')
  • 您要保存多少个文件? 1 还是 100?

标签: sorting pyspark partition


【解决方案1】:

我在文档中找不到关于此的明确声明,只有 pyspark.sql.DataFrame.repartition 的此提示:

生成的DataFrame 是哈希分区的。

显然,repartition 不会将行按特定(即字母)顺序排列(即使它们之前已排序),它只会对它们进行分组。考虑到名称,.sortWithinPartitions 没有施加全局顺序也就不足为奇了,这意味着排序只发生在分区内,而不是分区上。你可以试试.sort

【讨论】:

  • 我也尝试过使用 .sort,但结果与 orderBy 相同
猜你喜欢
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
相关资源
最近更新 更多