azkaban-rb 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/example/Rakefile CHANGED
@@ -38,7 +38,7 @@ namespace @@job_namespace.to_sym do
38
38
  reads "#{@@hdfs_root}/input.txt", :as => "input"
39
39
  writes "#{@@hdfs_root}/input_grouped.txt", :as => "output"
40
40
  end
41
-
41
+
42
42
  pig_job :test2 => :test do
43
43
  uses "src/test2.pig"
44
44
  reads "#{@@hdfs_root}/input_grouped.txt", :as => "input"
@@ -70,4 +70,16 @@ task :deploy => :zip do
70
70
  Azkaban.deploy(config['azkaban_uri'], @@azkaban_path, @@zip_name)
71
71
  end
72
72
 
73
- task :default => :zip
73
+ task :default => :zip
74
+
75
+ # Create a run task for each pig job so we can run using Rake. Parameter substituion is done automatically.
76
+ Rake.application.tasks.find_all do |task|
77
+ if task.job && task.job.instance_of?(Azkaban::PigJob)
78
+ desc "Run pig job #{task.name}"
79
+ task("run:#{task.name}".to_sym) do
80
+ script = task.job["pig.script"]
81
+ parameters = task.job.parameters.map { |k,v| "-param #{k}=#{v}"}.join(" ")
82
+ `bin/pig #{parameters} #{script}`
83
+ end
84
+ end
85
+ end
@@ -79,6 +79,14 @@ module Azkaban
79
79
  class << self
80
80
  attr_accessor :output_dir
81
81
  end
82
+
83
+ def [](k)
84
+ @args[k]
85
+ end
86
+
87
+ def []=(k,v)
88
+ @args[k] = v
89
+ end
82
90
 
83
91
  def set(params)
84
92
  params.each do |k,v|
@@ -115,10 +123,7 @@ module Azkaban
115
123
  private
116
124
 
117
125
  def handle_read_write_options(options, name)
118
- options = options[0] if options.size > 0
119
- if options && options.instance_of?(Hash) && options[:as]
120
- set "param.#{options[:as]}" => name
121
- end
126
+ # nothing to do
122
127
  end
123
128
 
124
129
  def create_properties_file(file_name, props)
@@ -140,14 +145,26 @@ module Azkaban
140
145
  end
141
146
 
142
147
  class PigJob < JobFile
148
+ attr_reader :parameters
149
+
143
150
  def initialize(task, ext)
144
151
  super(task,ext)
145
152
  set "type"=>"pig"
153
+ @parameters = {}
146
154
  end
147
155
 
148
156
  def uses(name)
149
157
  set "pig.script"=>name
150
158
  end
159
+
160
+ def handle_read_write_options(options, name)
161
+ options = options[0] if options.size > 0
162
+ if options && options.instance_of?(Hash) && options[:as]
163
+ # set the pig parameter
164
+ set "param.#{options[:as]}" => name
165
+ @parameters[options[:as]] = name
166
+ end
167
+ end
151
168
  end
152
169
 
153
170
  class JavaJob < JobFile
@@ -1,5 +1,5 @@
1
1
  module Azkaban
2
2
  module Rb
3
- VERSION = "0.0.5"
3
+ VERSION = "0.0.6"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: azkaban-rb
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 5
10
- version: 0.0.5
9
+ - 6
10
+ version: 0.0.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matt Hayes
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-20 00:00:00 Z
18
+ date: 2011-08-22 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: httpclient