コード例 #1
0
        private void Map(string input)
        {
            var mapResult = new MapResult();

            using (var reader = new StringReader(input))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    if (!String.IsNullOrWhiteSpace(line))
                    {
                        var language = line.Split(new [] { '|' }).Last().Trim();

                        mapResult.Counts.Add(new LanguageCount(language));
                    }
                }
            }

            Console.WriteLine("Mapper [{0}/{1}]: {2}",
                Self.Path.Name, Thread.CurrentThread.ManagedThreadId, mapResult);

            // simulate some runtime...
            Thread.Sleep(100);

            Sender.Tell(mapResult);
        }
コード例 #2
0
        private void Reduce(MapResult mapResult)
        {
            var reduceResult = new ReduceResult();

            foreach (var count in mapResult.Counts)
            {
                if (reduceResult.Result.ContainsKey(count.Language))
                {
                    reduceResult.Result[count.Language] += count.Count;
                }
                else
                {
                    reduceResult.Result[count.Language] = count.Count;
                }
            }

            Console.WriteLine("Reducer [{0}/{1}]: {2}",
                Self.Path.Name, Thread.CurrentThread.ManagedThreadId, reduceResult);

            // simulate some runtime...
            Thread.Sleep(100);

            Sender.Tell(reduceResult);
        }