gpt4 book ai didi

jdbc - 按关键 "within"分区进行高效分组

转载 作者:行者123 更新时间:2023-12-05 01:30:53 25 4
gpt4 key购买 nike

我正在尝试调整流程以激发 Spark 。基本上,该过程分析来自 JDBC 数据源的批量数据每条记录都有一个batchId,还有一个更高级别的groupId。

  • 批处理数量大(提前未知)。

  • 组数约为 100。

  • 每个批处理的记录数可以容纳在 RAM 中。

实际分析代码无所谓,但不适合reduceByKey或combineByKey等更具体的模型

我的想法是:

  • 使用jdbcRdd读取数据,使用“group id”进行分区

  • 使用 group by batchId 准备数据

  • 使用 map 来应用业务逻辑。

瓶颈似乎是 groupByKey,据我了解,这将强制进行洗牌(将数据写入磁盘) - 即使每个批处理都包含在单个分区中。

另一种可能的方法是使用 batchId 进行分区,但这会创建大量的分区 - 因此会产生大量的查询

有没有办法在分区内按键执行分组?还有其他可能的方法吗?

最佳答案

是的,您需要使用 mapPartitions。您可以访问分区中所有记录的迭代器。您只是从那里编写 Scala 代码,并且可以做您喜欢做的事情,包括建立一个批处理 ID 到记录的 Map。请注意,这必须适合内存,但如果这很重要,您总是可以减小分区大小。

关于jdbc - 按关键 "within"分区进行高效分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26088981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com