td 0.15.2 → 0.15.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog +5 -0
- data/contrib/completion/_td +2 -1
- data/lib/td/command/bulk_import.rb +1 -0
- data/lib/td/command/export.rb +9 -4
- data/lib/td/command/list.rb +3 -2
- data/lib/td/command/query.rb +1 -0
- data/lib/td/command/table.rb +4 -7
- data/lib/td/command/workflow.rb +23 -6
- data/lib/td/version.rb +1 -1
- data/td.gemspec +2 -2
- metadata +15 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0664e06a537f0c5e0a8c191df507b03462a803dd
|
4
|
+
data.tar.gz: e03b262494754689483a2e132401efdc1f436b6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65c89dc8dd648fb8ad188be1da9dd2a26e1b07b93ad1dfbc7119870e7d648f13290bb1828e0f087932afcd8103fe425ac5f2eff2fcbe7832a2ec083d56b4f3ba
|
7
|
+
data.tar.gz: 819bf1005d21dbb40e671f4e93dabfbff79ce0c948982e5734dfb75d640466197300a4857564455f802de3f6fe5f5df34d56d069b8c4704dcf7f47a06c79fea9
|
data/ChangeLog
CHANGED
data/contrib/completion/_td
CHANGED
@@ -16,7 +16,7 @@ subcommands=(
|
|
16
16
|
|
17
17
|
"bulk_import\:list":"List bulk import sessions"
|
18
18
|
"bulk_import\:show":"Show list of uploaded parts"
|
19
|
-
"bulk_import\:create":"Create a new bulk import session to the
|
19
|
+
"bulk_import\:create":"Create a new bulk import session to the table"
|
20
20
|
"bulk_import\:prepare_parts":"Convert files into part file format"
|
21
21
|
#"bulk_import\:prepare_parts2":"Convert files into part file format"
|
22
22
|
"bulk_import\:upload_part":"Upload or re-upload a file into a bulk import session"
|
@@ -84,6 +84,7 @@ subcommands=(
|
|
84
84
|
"wf":"Run a workflow command"
|
85
85
|
"workflow":"Run a workflow command"
|
86
86
|
"workflow:reset":"Reset the workflow module"
|
87
|
+
"workflow:update":"Update the workflow module"
|
87
88
|
|
88
89
|
# TODO: Add ACL related commands
|
89
90
|
)
|
data/lib/td/command/export.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
+
require 'td/command/job'
|
1
2
|
|
2
3
|
module TreasureData
|
3
4
|
module Command
|
4
|
-
SUPPORTED_FORMATS = %W[json.gz line-json.gz tsv.gz]
|
5
|
+
SUPPORTED_FORMATS = %W[json.gz line-json.gz tsv.gz jsonl.gz]
|
5
6
|
SUPPORTED_ENCRYPT_METHOD = %W[s3]
|
6
7
|
|
7
8
|
def export_result(op)
|
@@ -22,7 +23,7 @@ module Command
|
|
22
23
|
$stderr.puts "result export job #{job.job_id} is queued."
|
23
24
|
$stderr.puts "Use '#{$prog} " + Config.cl_options_string + "job:show #{job.job_id}' to show the status."
|
24
25
|
|
25
|
-
if wait
|
26
|
+
if wait
|
26
27
|
wait_job(job)
|
27
28
|
$stdout.puts "status : #{job.status}"
|
28
29
|
end
|
@@ -66,7 +67,11 @@ module Command
|
|
66
67
|
op.on('-s', '--aws-secret-key SECRET_KEY', 'AWS secret access key to export data (required)') {|s|
|
67
68
|
aws_secret_access_key = s
|
68
69
|
}
|
69
|
-
op.on('-F', '--file-format FILE_FORMAT',
|
70
|
+
op.on('-F', '--file-format FILE_FORMAT',
|
71
|
+
'file format for exported data.',
|
72
|
+
'Available formats are tsv.gz (tab-separated values per line) and jsonl.gz (JSON record per line).',
|
73
|
+
'The json.gz and line-json.gz formats are default and still available but only for backward compatibility purpose;',
|
74
|
+
' use is discouraged because they have far lower performance.') { |s|
|
70
75
|
raise ArgumentError, "#{s} is not a supported file format" unless SUPPORTED_FORMATS.include?(s)
|
71
76
|
file_format = s
|
72
77
|
}
|
@@ -121,7 +126,7 @@ module Command
|
|
121
126
|
$stderr.puts "Export job #{job.job_id} is queued."
|
122
127
|
$stderr.puts "Use '#{$prog} " + Config.cl_options_string + "job:show #{job.job_id}' to show the status."
|
123
128
|
|
124
|
-
if wait
|
129
|
+
if wait
|
125
130
|
wait_job(job)
|
126
131
|
$stdout.puts "Status : #{job.status}"
|
127
132
|
end
|
data/lib/td/command/list.rb
CHANGED
@@ -246,7 +246,7 @@ module List
|
|
246
246
|
|
247
247
|
add_list 'bulk_import:list', %w[], 'List bulk import sessions', ['bulk_import:list']
|
248
248
|
add_list 'bulk_import:show', %w[name], 'Show list of uploaded parts', ['bulk_import:show']
|
249
|
-
add_list 'bulk_import:create', %w[name db table], 'Create a new bulk import session to the
|
249
|
+
add_list 'bulk_import:create', %w[name db table], 'Create a new bulk import session to the table', ['bulk_import:create logs_201201 example_db event_logs']
|
250
250
|
add_list 'bulk_import:prepare_parts', %w[files_], 'Convert files into part file format', ['bulk_import:prepare_parts logs/*.csv --format csv --columns time,uid,price,count --time-column "time" -o parts/']
|
251
251
|
add_list 'bulk_import:upload_part', %w[name id path.msgpack.gz], 'Upload or re-upload a file into a bulk import session', ['bulk_import:upload_part logs_201201 01h data-201201-01.msgpack.gz']
|
252
252
|
add_list 'bulk_import:upload_parts', %w[name files_], 'Upload or re-upload files into a bulk import session', ['bulk_import:upload_parts parts/* --parallel 4']
|
@@ -261,7 +261,7 @@ module List
|
|
261
261
|
|
262
262
|
add_list 'import:list', %w[], 'List bulk import sessions', ['import:list']
|
263
263
|
add_list 'import:show', %w[name], 'Show list of uploaded parts', ['import:show']
|
264
|
-
add_list 'import:create', %w[name db table], 'Create a new bulk import session to the
|
264
|
+
add_list 'import:create', %w[name db table], 'Create a new bulk import session to the table', ['import:create logs_201201 example_db event_logs']
|
265
265
|
add_list 'import:jar_version', %w[], 'Show import jar version', ['import:jar_version'], false
|
266
266
|
add_list 'import:jar_update', %w[], 'Update import jar to the latest version', ['import:jar_update']
|
267
267
|
add_list 'import:prepare', %w[files_], 'Convert files into part file format', ['import:prepare logs/*.csv --format csv --columns time,uid,price,count --time-column "time" -o parts/'], false
|
@@ -362,6 +362,7 @@ module List
|
|
362
362
|
|
363
363
|
add_list 'workflow', %w[], 'Run a workflow command'
|
364
364
|
add_list 'workflow:reset', %w[], 'Reset the workflow module'
|
365
|
+
add_list 'workflow:update', %w[version?], 'Update the workflow module'
|
365
366
|
add_list 'workflow:version', %w[], 'Show workflow module version'
|
366
367
|
|
367
368
|
# aliases
|
data/lib/td/command/query.rb
CHANGED
data/lib/td/command/table.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'td/helpers'
|
2
|
+
require 'td/command/job'
|
2
3
|
|
3
4
|
module TreasureData
|
4
5
|
module Command
|
@@ -276,9 +277,7 @@ module Command
|
|
276
277
|
wait = false
|
277
278
|
pool_name = nil
|
278
279
|
|
279
|
-
op.on('-t', '--to TIME', 'end time of logs to delete in Unix time multiple of 3600 (1 hour)'
|
280
|
-
' or Ruby time string format (e.g. \'2014-07-01 14:00:00 JST\') where',
|
281
|
-
' the minutes and seconds are required to be 0.') {|s|
|
280
|
+
op.on('-t', '--to TIME', 'end time of logs to delete in Unix time >0 and multiple of 3600 (1 hour)') {|s|
|
282
281
|
if s.to_i.to_s == s
|
283
282
|
# UNIX time
|
284
283
|
to = s.to_i
|
@@ -287,9 +286,7 @@ module Command
|
|
287
286
|
to = Time.parse(s).to_i
|
288
287
|
end
|
289
288
|
}
|
290
|
-
op.on('-f', '--from TIME', 'start time of logs to delete in Unix time multiple of 3600 (1 hour)'
|
291
|
-
' or Ruby time string format (e.g. \'2014-07-01 13:00:00 JST\') where',
|
292
|
-
' the minutes and seconds are required to be 0.') {|s|
|
289
|
+
op.on('-f', '--from TIME', 'start time of logs to delete in Unix time >0 and multiple of 3600 (1 hour)') {|s|
|
293
290
|
if s.to_i.to_s == s
|
294
291
|
from = s.to_i
|
295
292
|
else
|
@@ -333,7 +330,7 @@ module Command
|
|
333
330
|
$stderr.puts "Partial delete job #{job.job_id} is queued."
|
334
331
|
$stderr.puts "Use '#{$prog} " + Config.cl_options_string + "job:show #{job.job_id}' to show the status."
|
335
332
|
|
336
|
-
if wait
|
333
|
+
if wait
|
337
334
|
wait_job(job)
|
338
335
|
$stdout.puts "Status : #{job.status}"
|
339
336
|
end
|
data/lib/td/command/workflow.rb
CHANGED
@@ -66,8 +66,18 @@ module TreasureData
|
|
66
66
|
}
|
67
67
|
end
|
68
68
|
|
69
|
+
def workflow_update(op)
|
70
|
+
version = op.cmd_parse
|
71
|
+
$stdout << "Downloading workflow module #{version}..."
|
72
|
+
download_digdag(version)
|
73
|
+
$stdout.puts ' Done.'
|
74
|
+
return 0
|
75
|
+
end
|
76
|
+
|
69
77
|
# "Factory reset"
|
70
78
|
def workflow_reset(op)
|
79
|
+
op.cmd_parse # to show help
|
80
|
+
|
71
81
|
$stdout << 'Removing workflow module...'
|
72
82
|
FileUtils.rm_rf digdag_dir
|
73
83
|
$stdout.puts ' Done.'
|
@@ -75,6 +85,8 @@ module TreasureData
|
|
75
85
|
end
|
76
86
|
|
77
87
|
def workflow_version(op)
|
88
|
+
op.cmd_parse # to show help
|
89
|
+
|
78
90
|
unless File.exists?(digdag_cli_path)
|
79
91
|
$stderr.puts('Workflow module not yet installed.')
|
80
92
|
return 1
|
@@ -118,12 +130,17 @@ module TreasureData
|
|
118
130
|
ENV.fetch('TD_WF_JAVA', '').strip
|
119
131
|
end
|
120
132
|
|
121
|
-
def digdag_base_url
|
122
|
-
'http://toolbelt.treasure-data.com/digdag'
|
133
|
+
def digdag_base_url(version=nil)
|
134
|
+
base = 'http://toolbelt.treasure-data.com/digdag'
|
135
|
+
if version.to_s == ''
|
136
|
+
base
|
137
|
+
else
|
138
|
+
"#{base}-#{version}"
|
139
|
+
end
|
123
140
|
end
|
124
141
|
|
125
142
|
private
|
126
|
-
def digdag_url
|
143
|
+
def digdag_url(version=nil)
|
127
144
|
url = ENV.fetch('TD_DIGDAG_URL', '').strip
|
128
145
|
return url unless url.empty?
|
129
146
|
user = Config.read['account.user']
|
@@ -131,7 +148,7 @@ module TreasureData
|
|
131
148
|
return digdag_base_url
|
132
149
|
end
|
133
150
|
query = URI.encode_www_form('user' => user)
|
134
|
-
"#{digdag_base_url}?#{query}"
|
151
|
+
"#{digdag_base_url(version)}?#{query}"
|
135
152
|
end
|
136
153
|
|
137
154
|
private
|
@@ -406,7 +423,7 @@ EOF
|
|
406
423
|
end
|
407
424
|
end
|
408
425
|
|
409
|
-
def download_digdag
|
426
|
+
def download_digdag(version=nil)
|
410
427
|
require 'net/http'
|
411
428
|
require 'openssl'
|
412
429
|
|
@@ -422,7 +439,7 @@ EOF
|
|
422
439
|
status = nil
|
423
440
|
download_path = File.join(download_dir, 'digdag')
|
424
441
|
File.open(download_path, 'wb') do |file|
|
425
|
-
status = Updater.stream_fetch(digdag_url, file) {
|
442
|
+
status = Updater.stream_fetch(digdag_url(version), file) {
|
426
443
|
indicator.update
|
427
444
|
}
|
428
445
|
end
|
data/lib/td/version.rb
CHANGED
data/td.gemspec
CHANGED
@@ -21,9 +21,9 @@ Gem::Specification.new do |gem|
|
|
21
21
|
gem.add_dependency "yajl-ruby", "~> 1.1"
|
22
22
|
gem.add_dependency "hirb", ">= 0.4.5"
|
23
23
|
gem.add_dependency "parallel", "~> 1.8.0"
|
24
|
-
gem.add_dependency "td-client", "
|
24
|
+
gem.add_dependency "td-client", ">= 0.8.85", "< 2"
|
25
25
|
gem.add_dependency "td-logger", ">= 0.3.21", "< 2"
|
26
|
-
gem.add_dependency "rubyzip", "
|
26
|
+
gem.add_dependency "rubyzip", ">= 1.2.1"
|
27
27
|
gem.add_dependency "zip-zip", "~> 0.3"
|
28
28
|
gem.add_dependency "ruby-progressbar", "~> 1.7"
|
29
29
|
gem.add_development_dependency "rake"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: td
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.15.
|
4
|
+
version: 0.15.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Treasure Data, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -70,16 +70,22 @@ dependencies:
|
|
70
70
|
name: td-client
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 0.8.85
|
76
|
+
- - "<"
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '2'
|
76
79
|
type: :runtime
|
77
80
|
prerelease: false
|
78
81
|
version_requirements: !ruby/object:Gem::Requirement
|
79
82
|
requirements:
|
80
|
-
- - "
|
83
|
+
- - ">="
|
81
84
|
- !ruby/object:Gem::Version
|
82
85
|
version: 0.8.85
|
86
|
+
- - "<"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '2'
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
90
|
name: td-logger
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,16 +110,16 @@ dependencies:
|
|
104
110
|
name: rubyzip
|
105
111
|
requirement: !ruby/object:Gem::Requirement
|
106
112
|
requirements:
|
107
|
-
- - "
|
113
|
+
- - ">="
|
108
114
|
- !ruby/object:Gem::Version
|
109
|
-
version: 1.1
|
115
|
+
version: 1.2.1
|
110
116
|
type: :runtime
|
111
117
|
prerelease: false
|
112
118
|
version_requirements: !ruby/object:Gem::Requirement
|
113
119
|
requirements:
|
114
|
-
- - "
|
120
|
+
- - ">="
|
115
121
|
- !ruby/object:Gem::Version
|
116
|
-
version: 1.1
|
122
|
+
version: 1.2.1
|
117
123
|
- !ruby/object:Gem::Dependency
|
118
124
|
name: zip-zip
|
119
125
|
requirement: !ruby/object:Gem::Requirement
|
@@ -303,7 +309,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
303
309
|
version: '0'
|
304
310
|
requirements: []
|
305
311
|
rubyforge_project:
|
306
|
-
rubygems_version: 2.
|
312
|
+
rubygems_version: 2.6.11
|
307
313
|
signing_key:
|
308
314
|
specification_version: 4
|
309
315
|
summary: CLI to manage data on Treasure Data, the Hadoop-based cloud data warehousing
|