在spark中按用户id分组

olqngx59  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(292)

我有10个具有相同模式的文件:
用户标识、时间戳、事件类型、描述、其他列
它们存储在10个文件中,因为它们来自10个不同的来源。要做一些分析,我需要将同一个用户的数据(记录)组合在一起,并产生一些值(计算逻辑相当复杂,reducebykey无法完成)。所以我在spark中使用groupbykey()。这是非常耗时的洗牌。有什么办法让这更快吗?在此阶段,计算将完全在具有相同用户id的记录中进行。顺便说一句,我可以和数据提供商谈谈,让他们准备特定格式的数据。

nnvyjq4y

nnvyjq4y1#

我认为在将文件读入rdd时,可以在分区中使用相同的用户id创建相同的记录。例如,假设您想为rdd创建20个分区,您可以在记录中获取用户id的hashcode,并使用 hashcode % 20 将此记录分配给其中一个分区。它可以确保具有相同用户id的记录进入相同的分区。

相关问题