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.
- data/lib/job.rb +9 -0
- data/lib/task.rb +8 -0
- 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)
|
data/lib/task.rb
CHANGED
@@ -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?
|