代码之家  ›  专栏  ›  技术社区  ›  Waqar Ahmed

火花均匀数据分布

  •  0
  • Waqar Ahmed  · 技术社区  · 5 年前

    我正在努力解决 倾斜数据 数据帧中的问题。我介绍了一个基于 装箱算法 它应该在箱子(在我的例子中是分区)之间均匀分布数据。我的箱子数是 500,000 排。 我已经为每一行分配了一个箱子编号,该行应该属于哪个位置。箱子计数范围为 . 假设列名为 钥匙 .

    理想情况下,当我基于列对数据帧执行重新分区操作时 钥匙 ,它应该将数据均匀分布在 282个分区 ,每个包含周围的记录 500,000 .

    | key |count |
    +-----+------+
    |1    |495941|
    |2    |499607|
    |3    |498896|
    |4    |502845|
    |5    |498213|
    |6    |501325|
    |7    |502355|
    |8    |501816|
    |9    |498829|
    |10   |498272|
    |11   |499802|
    |12   |501580|
    |13   |498779|
    |14   |498654|
    ...
    ...
    |282  |491258|
    

    但仍有一些分区包含多个键。例如,分区 101 115 合并为 1分区 ,这是我意想不到的行为。

    +----+------+
    |key |count |
    +----+------+
    |101 |500014|
    |115 |504995|
    +----+------+
    

    如果我编写一个自定义分区器,那么我必须将数据帧转换为rdd,并基于键列对rdd进行操作。但键列最初可以有重复项,如果我按分组,那么多个记录将组合在一起,这将破坏重新划分数据的逻辑。

    如果有人能解释 重新编写 帮我纠正一下。

    0 回复  |  直到 5 年前