Skip to content

Instantly share code, notes, and snippets.

@tomelm
Last active December 13, 2015 20:58
Show Gist options
  • Save tomelm/4974214 to your computer and use it in GitHub Desktop.
Save tomelm/4974214 to your computer and use it in GitHub Desktop.
{"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla pulvinar mattis neque sit amet venenatis. Pellentesque ut mauris eget nulla suscipit aliquet et eu lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla vulputate vehicula justo, in posuere felis adipiscing in. Duis bibendum erat sed arcu dapibus at tincidunt erat feugiat. Donec ut purus laoreet felis facilisis pharetra et vitae sem. Morbi semper pellentesque ligula in tincidunt. Nunc ut nisi eget quam accumsan tristique. Vestibulum tincidunt, metus eu malesuada vehicula, augue nunc varius risus, ac malesuada felis eros quis lectus. Nam ac turpis vitae est dictum ultrices. Pellentesque viverra, urna sed rutrum bibendum, turpis nibh viverra erat, et mattis nunc arcu nec massa. Phasellus non diam vel sem vehicula pulvinar a porta dolor. Cras ut leo massa. Sed vel vestibulum nibh."}
{"text": "Ut vel libero fringilla elit placerat adipiscing ullamcorper ac lacus. Nulla tortor tortor, cursus in feugiat quis, aliquet non sem. Pellentesque ligula diam, congue vitae porttitor ut, aliquet quis neque. Nulla molestie nisl vitae arcu egestas suscipit. Maecenas vitae mauris nisl. Pellentesque est urna, vulputate eget pharetra id, lobortis eget tortor. Donec non urna dui, sodales tempor nisi. Nulla ornare leo in magna elementum a tincidunt nisi ultrices. Praesent non dolor eget orci tristique semper. Morbi fermentum congue tristique. Praesent pulvinar, velit in consectetur rhoncus, odio metus luctus neque, eu consequat velit tortor quis libero. Quisque aliquam tempor adipiscing. Proin diam nunc, feugiat at sagittis ac, imperdiet vel nisl. Morbi imperdiet orci eu ante fringilla sed tempus arcu auctor. Nunc ac quam nibh, non vulputate ipsum. Praesent et nibh ligula, sed sagittis elit."}
{"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla pulvinar mattis neque sit amet venenatis. Pellentesque ut mauris eget nulla suscipit aliquet et eu lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla vulputate vehicula justo, in posuere felis adipiscing in. Duis bibendum erat sed arcu dapibus at tincidunt erat feugiat. Donec ut purus laoreet felis facilisis pharetra et vitae sem. Morbi semper pellentesque ligula in tincidunt. Nunc ut nisi eget quam accumsan tristique. Vestibulum tincidunt, metus eu malesuada vehicula, augue nunc varius risus, ac malesuada felis eros quis lectus. Nam ac turpis vitae est dictum ultrices. Pellentesque viverra, urna sed rutrum bibendum, turpis nibh viverra erat, et mattis nunc arcu nec massa. Phasellus non diam vel sem vehicula pulvinar a porta dolor. Cras ut leo massa. Sed vel vestibulum nibh."}
{"text": "Ut vel libero fringilla elit placerat adipiscing ullamcorper ac lacus. Nulla tortor tortor, cursus in feugiat quis, aliquet non sem. Pellentesque ligula diam, congue vitae porttitor ut, aliquet quis neque. Nulla molestie nisl vitae arcu egestas suscipit. Maecenas vitae mauris nisl. Pellentesque est urna, vulputate eget pharetra id, lobortis eget tortor. Donec non urna dui, sodales tempor nisi. Nulla ornare leo in magna elementum a tincidunt nisi ultrices. Praesent non dolor eget orci tristique semper. Morbi fermentum congue tristique. Praesent pulvinar, velit in consectetur rhoncus, odio metus luctus neque, eu consequat velit tortor quis libero. Quisque aliquam tempor adipiscing. Proin diam nunc, feugiat at sagittis ac, imperdiet vel nisl. Morbi imperdiet orci eu ante fringilla sed tempus arcu auctor. Nunc ac quam nibh, non vulputate ipsum. Praesent et nibh ligula, sed sagittis elit."}
require 'json'
require 'wukong'
module WordCount
class Mapper < Wukong::Streamer::LineStreamer
def process record
json = JSON.parse(record)
words = json['text'].downcase.split(' ').reject(&:blank?)
words.each { |word| yield [word, 1] }
end
end
class Reducer < Wukong::Streamer::AccumulatingReducer
def start! *args
@values = {}
end
def accumulate word, count
@values[word] ||= 0
@values[word] += count.to_i
end
def finalize
yield @values
end
end
require 'wukong/streamer/counting_reducer'
class Reducer3 < Wukong::Streamer::CountingReducer
end
end
Wukong::Script.new(WordCount::Mapper, WordCount::Reducer3).run
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment