class Skynet class MapreduceTest include SkynetDebugger def self.map(datas) results = {} datas.each do |data| results[data] ||= 0 results[data] += 1 end [results] end def self.reduce(datas) results = {} datas.each do |hashes| hashes.each do |key,value| results[key] ||= 0 results[key] += value end end results end end class ProfileCountTest def self.run job = Skynet::Job.new( :mappers => 2, :reducers => 1, :map_reduce_class => self, :map_data => [OpenStruct.new({:created_by => 2}),OpenStruct.new({:created_by => 2}),OpenStruct.new({:created_by => 3})] ) results = job.run end def self.map(profiles) result = Array.new profiles.each do |profile| result << [profile.created_by, 1] if profile.created_by end result end def self.reduce(pairs) totals = Hash.new pairs.each do |pair| created_by, count = pair[0], pair[1] totals[created_by] ||= 0 totals[created_by] += count end totals end end end