我必须使用mapreduce在hadoop环境中处理两个相关的文件。第一个文件是一个巨大的日志文件,它记录了用户的活动。第二个文件是相对较小的文件,包含用户的详细信息。两者都是.txt文件。第一个文件(日志文件)的格式为:
UserId | loginTime | LogoutTime | roomNum | MachineID
这个文件很大(几tb)。
第二个文件(用户文件小文件约20mb)是:
UserId | UserFname | UserLname | DOB | Address
我必须找出用户使用实验室机器的频率,最频繁的用户,并列出他们的名字。
我知道如何处理一个文件,如果一切都在那里。由于用户详细信息在另一个文件夹中,因此我很难处理它。我是mapreduce的新手,我在这里寻求您的帮助和建议。对我来说,这个问题类似于用外键连接rdbms中的两个表。
1条答案
按热度按时间wydwbb8l1#
您可以使用分布式缓存来保存小文件。分布式缓存存储在内存中,并分布在运行map reduce任务的所有集群中。
按以下方式将文件添加到分布式缓存。
并从Map器的设置方法中获取此文件,然后在Map或reduce方法中使用此数据。
或者,您可以使用不同的Map器来处理