在Spark

时间:2016-05-02 21:38:01

标签: hadoop apache-spark

我有10个具有相同架构的文件:

user_Id,time_stamp,event_type,description,other_columns

它们存储在10个文件中,因为它们来自10个不同的来源。为了做一些分析,我需要将相同用户的数据(记录)组合在一起并产生一些值(计算逻辑相当复杂,并且不能通过reduceByKey来完成)。所以我在Spark中使用groupByKey()。由于洗牌,这非常耗时。任何想法如何使这更快?在此阶段,计算将完全在具有相同用户ID的记录内。顺便说一句,我可以和数据提供者交谈,要求他们以某种格式准备数据。

1 个答案:

答案 0 :(得分:0)

我认为当您将文件读入RDD时,您可以在分区中使用相同的用户ID创建相同的记录。例如,假设您要为RDD创建20个分区,您可以在记录中获取用户ID的哈希码,并使用setUpClass将此记录分配给其中一个分区。它可以确保具有相同用户ID的记录进入同一分区。