trafficbroker-mandy 0.2.11 → 0.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/lib/job.rb +9 -0
  2. data/lib/task.rb +8 -0
  3. metadata +1 -1
data/lib/job.rb CHANGED
@@ -16,12 +16,17 @@ module Mandy
16
16
  def initialize(name, &blk)
17
17
  @name = name
18
18
  @settings = {}
19
+ @modules = []
19
20
  @mapper_class = Mandy::Mappers::PassThroughMapper
20
21
  @reducer_class = Mandy::Reducers::PassThroughReducer
21
22
  set('mapred.job.name', name)
22
23
  instance_eval(&blk) if blk
23
24
  end
24
25
 
26
+ def mixin(*modules)
27
+ modules.each {|m| @modules << m}
28
+ end
29
+
25
30
  def set(key, value)
26
31
  @settings[key.to_s] = value.to_s
27
32
  end
@@ -45,10 +50,14 @@ module Mandy
45
50
 
46
51
  def map(klass=nil, &blk)
47
52
  @mapper_class = klass || Mandy::Mappers::Base.compile(&blk)
53
+ @modules.each {|m| @mapper_class.send(:include, m) }
54
+ @mapper_class
48
55
  end
49
56
 
50
57
  def reduce(klass=nil, &blk)
51
58
  @reducer_class = klass || Mandy::Reducers::Base.compile(&blk)
59
+ @modules.each {|m| @reducer_class.send(:include, m) }
60
+ @reducer_class
52
61
  end
53
62
 
54
63
  def run_map(input=STDIN, output=STDOUT, &blk)
@@ -2,6 +2,7 @@ module Mandy
2
2
  class Task
3
3
  JSON_PAYLOAD_KEY = "json"
4
4
  KEY_VALUE_SEPERATOR = "\t" unless defined?(KEY_VALUE_SEPERATOR)
5
+ NUMERIC_PADDING = 16
5
6
 
6
7
  def initialize(input=STDIN, output=STDOUT)
7
8
  @input, @output = input, output
@@ -9,6 +10,8 @@ module Mandy
9
10
 
10
11
  def emit(key, value=nil)
11
12
  key = 'nil' if key.nil?
13
+ key = pad(key) if key.is_a?(Numeric) && key.to_s.length < NUMERIC_PADDING
14
+
12
15
  @output.puts(value.nil? ? key.to_s : "#{serialize(key)}\t#{serialize(value)}")
13
16
  end
14
17
 
@@ -21,6 +24,11 @@ module Mandy
21
24
  end
22
25
 
23
26
  private
27
+ def pad(key)
28
+ key_parts = key.to_s.split(".")
29
+ key_parts[0] = key_parts.first.rjust(NUMERIC_PADDING, '0')
30
+ key_parts.join('.')
31
+ end
24
32
 
25
33
  def parameter(name)
26
34
  return find_json_param(name) if json_provided?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trafficbroker-mandy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.11
4
+ version: 0.2.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Kent