mobilize-hive 1.351 → 1.352
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/mobilize-hive/handlers/hive.rb +14 -11
- data/lib/mobilize-hive/version.rb +1 -1
- metadata +4 -4
|
@@ -155,8 +155,8 @@ module Mobilize
|
|
|
155
155
|
Gdrive.unslot_worker_by_path(stage_path)
|
|
156
156
|
|
|
157
157
|
#check for select at end
|
|
158
|
-
hql_array = hql.split("
|
|
159
|
-
last_statement = hql_array.last
|
|
158
|
+
hql_array = hql.downcase.split("\n").reject{|l| l.starts_with?("--") or l.strip.length==0}.join("\n").split(";")
|
|
159
|
+
last_statement = hql_array.last
|
|
160
160
|
if last_statement.to_s.starts_with?("select")
|
|
161
161
|
#nil if no prior commands
|
|
162
162
|
prior_hql = hql_array[0..-2].join(";") if hql_array.length > 1
|
|
@@ -209,13 +209,15 @@ module Mobilize
|
|
|
209
209
|
schema_hash
|
|
210
210
|
end
|
|
211
211
|
|
|
212
|
-
def Hive.hql_to_table(cluster, db, table, part_array, source_hql, user_name, job_name, drop=false, schema_hash=nil,
|
|
212
|
+
def Hive.hql_to_table(cluster, db, table, part_array, source_hql, user_name, job_name, drop=false, schema_hash=nil, run_params=nil)
|
|
213
213
|
table_path = [db,table].join(".")
|
|
214
214
|
table_stats = Hive.table_stats(cluster, db, table, user_name)
|
|
215
215
|
url = "hive://" + [cluster,db,table,part_array.compact.join("/")].join("/")
|
|
216
216
|
|
|
217
|
-
|
|
218
|
-
|
|
217
|
+
#decomment hql
|
|
218
|
+
|
|
219
|
+
source_hql_array = source_hql.downcase.split("\n").reject{|l| l.starts_with?("--") or l.strip.length==0}.join("\n").split(";")
|
|
220
|
+
last_select_i = source_hql_array.rindex{|s| s.starts_with?("select")}
|
|
219
221
|
#find the last select query -- it should be used for the temp table creation
|
|
220
222
|
last_select_hql = (source_hql_array[last_select_i..-1].join(";")+";")
|
|
221
223
|
#if there is anything prior to the last select, add it in prior to table creation
|
|
@@ -228,7 +230,7 @@ module Mobilize
|
|
|
228
230
|
temp_set_hql = "set mapred.job.name=#{job_name} (temp table);"
|
|
229
231
|
temp_drop_hql = "drop table if exists #{temp_table_path};"
|
|
230
232
|
temp_create_hql = "#{temp_set_hql}#{prior_hql}#{temp_drop_hql}create table #{temp_table_path} as #{last_select_hql}"
|
|
231
|
-
response = Hive.run(cluster,temp_create_hql,user_name,
|
|
233
|
+
response = Hive.run(cluster,temp_create_hql,user_name,run_params)
|
|
232
234
|
raise response['stderr'] if response['stderr'].to_s.ie{|s| s.index("FAILED") or s.index("KILLED")}
|
|
233
235
|
|
|
234
236
|
source_table_stats = Hive.table_stats(cluster,temp_db,temp_table_name,user_name)
|
|
@@ -267,7 +269,7 @@ module Mobilize
|
|
|
267
269
|
target_insert_hql,
|
|
268
270
|
temp_drop_hql].join
|
|
269
271
|
|
|
270
|
-
response = Hive.run(cluster, target_full_hql, user_name,
|
|
272
|
+
response = Hive.run(cluster, target_full_hql, user_name, run_params)
|
|
271
273
|
|
|
272
274
|
raise response['stderr'] if response['stderr'].to_s.ie{|s| s.index("FAILED") or s.index("KILLED")}
|
|
273
275
|
|
|
@@ -319,7 +321,7 @@ module Mobilize
|
|
|
319
321
|
part_set_hql = "set hive.cli.print.header=true;set mapred.job.name=#{job_name} (permutations);"
|
|
320
322
|
part_select_hql = "select distinct #{target_part_stmt} from #{temp_table_path};"
|
|
321
323
|
part_perm_hql = part_set_hql + part_select_hql
|
|
322
|
-
response = Hive.run(cluster, part_perm_hql, user_name,
|
|
324
|
+
response = Hive.run(cluster, part_perm_hql, user_name, run_params)
|
|
323
325
|
raise response['stderr'] if response['stderr'].to_s.ie{|s| s.index("FAILED") or s.index("KILLED")}
|
|
324
326
|
part_perm_tsv = response['stdout']
|
|
325
327
|
#having gotten the permutations, ensure they are dropped
|
|
@@ -332,7 +334,7 @@ module Mobilize
|
|
|
332
334
|
|
|
333
335
|
part_drop_hql = part_hash_array.map do |h|
|
|
334
336
|
part_drop_stmt = h.map do |name,value|
|
|
335
|
-
part_defs[name[1..-2]]=="string" ? "#{name}='#{value}'" : "#{name}=#{value}"
|
|
337
|
+
part_defs[name[1..-2]].downcase=="string" ? "#{name}='#{value}'" : "#{name}=#{value}"
|
|
336
338
|
end.join(",")
|
|
337
339
|
"use #{db};alter table #{table} drop if exists partition (#{part_drop_stmt});"
|
|
338
340
|
end.join
|
|
@@ -345,7 +347,7 @@ module Mobilize
|
|
|
345
347
|
|
|
346
348
|
target_full_hql = [target_set_hql, target_create_hql, target_insert_hql, temp_drop_hql].join
|
|
347
349
|
|
|
348
|
-
response = Hive.run(cluster, target_full_hql, user_name,
|
|
350
|
+
response = Hive.run(cluster, target_full_hql, user_name, run_params)
|
|
349
351
|
raise response['stderr'] if response['stderr'].to_s.ie{|s| s.index("FAILED") or s.index("KILLED")}
|
|
350
352
|
else
|
|
351
353
|
error_msg = "Incompatible partition specs"
|
|
@@ -543,7 +545,8 @@ module Mobilize
|
|
|
543
545
|
result = begin
|
|
544
546
|
url = if source_hql
|
|
545
547
|
#include any params (or nil) at the end
|
|
546
|
-
|
|
548
|
+
run_params = params['params']
|
|
549
|
+
Hive.hql_to_table(cluster, db, table, part_array, source_hql, user_name, job_name, drop, schema_hash,run_params)
|
|
547
550
|
elsif source_tsv
|
|
548
551
|
Hive.tsv_to_table(cluster, db, table, part_array, source_tsv, user_name, drop, schema_hash)
|
|
549
552
|
elsif source
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mobilize-hive
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '1.
|
|
4
|
+
version: '1.352'
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-04-
|
|
12
|
+
date: 2013-04-29 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: mobilize-hdfs
|
|
@@ -67,7 +67,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
67
67
|
version: '0'
|
|
68
68
|
segments:
|
|
69
69
|
- 0
|
|
70
|
-
hash:
|
|
70
|
+
hash: 1135176985926667885
|
|
71
71
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
72
72
|
none: false
|
|
73
73
|
requirements:
|
|
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
76
76
|
version: '0'
|
|
77
77
|
segments:
|
|
78
78
|
- 0
|
|
79
|
-
hash:
|
|
79
|
+
hash: 1135176985926667885
|
|
80
80
|
requirements: []
|
|
81
81
|
rubyforge_project:
|
|
82
82
|
rubygems_version: 1.8.25
|