td 0.10.85 → 0.10.86
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.
- checksums.yaml +7 -0
- data/ChangeLog +6 -0
- data/lib/td/command/bulk_import.rb +5 -345
- data/lib/td/command/import.rb +9 -1
- data/lib/td/command/list.rb +3 -3
- data/lib/td/command/runner.rb +2 -1
- data/lib/td/version.rb +1 -1
- metadata +19 -47
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e3a7c671d16731ca4b03f3063b539b9d88165483
|
4
|
+
data.tar.gz: 348c5b2ca638734cfc6f47a5f47500a9e9c188d0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 960cae5f7a35493c5b68d5cca143015947a0b438ace3856c6b922f3779e52fafbba0908b8ef50de7eda17770d42f760fd208695101e7213f558045c7f7fc8c0c
|
7
|
+
data.tar.gz: 9c1438ba072e135c4fdf96ff5fe3d50f49a6617ceb93ecda9a14b9b580cae61ccb5e03e6d721852f046c5f6ac6826efef8dc339815012e747e1eba0b3785b506
|
data/ChangeLog
CHANGED
@@ -197,6 +197,10 @@ module Command
|
|
197
197
|
end
|
198
198
|
end
|
199
199
|
|
200
|
+
def bulk_import_upload_parts2(op)
|
201
|
+
puts "This command is moved to 'td import:upload' since 0.10.85."
|
202
|
+
end
|
203
|
+
|
200
204
|
# obsoleted
|
201
205
|
def bulk_import_delete_part(op)
|
202
206
|
name, part_name = op.cmd_parse
|
@@ -423,352 +427,8 @@ module Command
|
|
423
427
|
$stderr.puts normalized_message if has_bignum
|
424
428
|
end
|
425
429
|
|
426
|
-
def bulk_import_upload_parts2(op)
|
427
|
-
opts = upload_parts2_config(op)
|
428
|
-
|
429
|
-
# java command
|
430
|
-
javacmd = 'java'
|
431
|
-
|
432
|
-
# make jvm options
|
433
|
-
jvm_opts = []
|
434
|
-
jvm_opts << "-Xmx1024m" # TODO
|
435
|
-
|
436
|
-
# find java/*.jar and td.jar
|
437
|
-
base_path = File.expand_path('../../..', File.dirname(__FILE__)) # TODO
|
438
|
-
libjars = Dir.glob("#{base_path}/java/**/*.jar")
|
439
|
-
found = libjars.find { |path| File.basename(path) =~ /^td-bulk-import/ }
|
440
|
-
td_command_jar = libjars.delete(found)
|
441
|
-
|
442
|
-
# make application options
|
443
|
-
app_opts = []
|
444
|
-
app_opts << "-cp \"#{td_command_jar}\""
|
445
|
-
|
446
|
-
# make system properties
|
447
|
-
sysprops = []
|
448
|
-
sysprops.concat(upload_parts2_sysprops(opts))
|
449
|
-
|
450
|
-
# make application arguments
|
451
|
-
app_args = []
|
452
|
-
app_args << 'com.treasure_data.bulk_import.Main'
|
453
|
-
app_args << 'upload_parts'
|
454
|
-
app_args << opts[21]
|
455
|
-
|
456
|
-
# TODO consider parameters including spaces; don't use join(' ')
|
457
|
-
command = "#{javacmd} #{jvm_opts.join(' ')} #{app_opts.join(' ')} #{sysprops.join(' ')} #{app_args.join(' ')}"
|
458
|
-
|
459
|
-
exec command
|
460
|
-
end
|
461
|
-
|
462
430
|
def bulk_import_prepare_parts2(op)
|
463
|
-
|
464
|
-
|
465
|
-
# java command
|
466
|
-
javacmd = 'java'
|
467
|
-
|
468
|
-
# make jvm options
|
469
|
-
jvm_opts = []
|
470
|
-
jvm_opts << "-Xmx1024m" # TODO
|
471
|
-
|
472
|
-
# find java/*.jar and td.jar
|
473
|
-
base_path = File.expand_path('../../..', File.dirname(__FILE__)) # TODO
|
474
|
-
libjars = Dir.glob("#{base_path}/java/**/*.jar")
|
475
|
-
found = libjars.find { |path| File.basename(path) =~ /^td-bulk-import/ }
|
476
|
-
td_command_jar = libjars.delete(found)
|
477
|
-
|
478
|
-
# make application options
|
479
|
-
app_opts = []
|
480
|
-
app_opts << "-cp \"#{td_command_jar}\""
|
481
|
-
|
482
|
-
# make system properties
|
483
|
-
sysprops = []
|
484
|
-
sysprops.concat(prepare_parts2_sysprops(opts))
|
485
|
-
|
486
|
-
# make application arguments
|
487
|
-
app_args = []
|
488
|
-
app_args << 'com.treasure_data.bulk_import.Main'
|
489
|
-
app_args << 'prepare_parts'
|
490
|
-
app_args << opts[18]
|
491
|
-
|
492
|
-
# TODO consider parameters including spaces; don't use join(' ')
|
493
|
-
command = "#{javacmd} #{jvm_opts.join(' ')} #{app_opts.join(' ')} #{sysprops.join(' ')} #{app_args.join(' ')}"
|
494
|
-
|
495
|
-
exec command
|
496
|
-
end
|
497
|
-
|
498
|
-
private
|
499
|
-
def prepare_parts2_sysprops(opts)
|
500
|
-
sysprops = []
|
501
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.format=#{opts[0]}"
|
502
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.compression=#{opts[1]}"
|
503
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.encoding=#{opts[2]}"
|
504
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.time-column=#{opts[3]}"
|
505
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.time-format=#{opts[4]}"
|
506
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.time-value=#{opts[5].to_s}" if opts[5]
|
507
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.output-dir=#{opts[6]}"
|
508
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.split-size=#{opts[7]}"
|
509
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.error-record-output=#{opts[8]}" if opts[8]
|
510
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.dry-run=#{opts[9]}"
|
511
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.delimiter=#{opts[10]}"
|
512
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.newline=#{opts[11]}"
|
513
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.column-header=#{opts[12]}" if opts[3]
|
514
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.columns=#{opts[13]}" if opts[1]
|
515
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.column-types=#{opts[14]}" if opts[2]
|
516
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.type-conversion-error=#{opts[15]}" if opts[15]
|
517
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.exclude-columns=#{opts[16]}"
|
518
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.only-columns=#{opts[17]}"
|
519
|
-
sysprops
|
520
|
-
end
|
521
|
-
|
522
|
-
private
|
523
|
-
def upload_parts2_sysprops(opts)
|
524
|
-
sysprops = []
|
525
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.format=#{opts[0]}"
|
526
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.compression=#{opts[1]}"
|
527
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.encoding=#{opts[2]}"
|
528
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.time-column=#{opts[3]}"
|
529
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.time-format=#{opts[4]}"
|
530
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.time-value=#{opts[5].to_s}" if opts[5]
|
531
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.output-dir=#{opts[6]}"
|
532
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.split-size=#{opts[7]}"
|
533
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.error-record-output=#{opts[8]}" if opts[8]
|
534
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.dry-run=#{opts[9]}"
|
535
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.delimiter=#{opts[10]}"
|
536
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.newline=#{opts[11]}"
|
537
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.column-header=#{opts[12]}" if opts[3]
|
538
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.columns=#{opts[13]}" if opts[1]
|
539
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.column-types=#{opts[14]}" if opts[2]
|
540
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.type-conversion-error=#{opts[15]}" if opts[15]
|
541
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.exclude-columns=#{opts[16]}"
|
542
|
-
sysprops << "-Dtd.bulk_import.prepare_parts.only-columns=#{opts[17]}"
|
543
|
-
|
544
|
-
sysprops << "-Dtd.bulk_import.upload_parts.auto-perform=#{opts[18]}"
|
545
|
-
sysprops << "-Dtd.bulk_import.upload_parts.auto-commit=#{opts[19]}"
|
546
|
-
sysprops << "-Dtd.bulk_import.upload_parts.parallel=#{opts[20]}"
|
547
|
-
sysprops << "-Dtd.bulk_import.upload_parts.retrycount=10"
|
548
|
-
sysprops << "-Dtd.bulk_import.upload_parts.waitsec=1"
|
549
|
-
sysprops << "-Dtd.api.key=#{get_client.apikey}"
|
550
|
-
sysprops
|
551
|
-
end
|
552
|
-
|
553
|
-
private
|
554
|
-
def prepare_parts2_config(op)
|
555
|
-
format = 'csv'
|
556
|
-
compress = 'none'
|
557
|
-
encoding = 'utf-8'
|
558
|
-
time_column = 'time'
|
559
|
-
time_format = nil
|
560
|
-
time_value = nil
|
561
|
-
outdir = nil
|
562
|
-
split_size_kb = PART_SPLIT_SIZE / 1024 # kb
|
563
|
-
error_record_output = nil
|
564
|
-
dry_run = false
|
565
|
-
|
566
|
-
delimiter = ','
|
567
|
-
newline = 'CRLF'
|
568
|
-
column_header = nil
|
569
|
-
columns = nil
|
570
|
-
column_types = nil
|
571
|
-
type_conversion_error = 'skip'
|
572
|
-
exclude_columns = nil
|
573
|
-
only_columns = nil
|
574
|
-
|
575
|
-
# prepare_parts
|
576
|
-
op.on('-f', '--format NAME', 'source file format [csv, tsv]; default=csv') {|s|
|
577
|
-
format = s
|
578
|
-
}
|
579
|
-
op.on('-C', '--compress TYPE', 'compressed type [gzip, none]; default=auto detect') {|s|
|
580
|
-
compress = s
|
581
|
-
}
|
582
|
-
op.on('-e', '--encoding TYPE', 'encoding type [utf-8]') {|s|
|
583
|
-
encoding = s
|
584
|
-
}
|
585
|
-
op.on('-t', '--time-column NAME', 'name of the time column') {|s|
|
586
|
-
time_column = s
|
587
|
-
}
|
588
|
-
op.on('-T', '--time-format', 'STRF_FORMAT; default=auto detect') {|s|
|
589
|
-
time_format = s
|
590
|
-
}
|
591
|
-
op.on('--time-value TIME', 'long value of the time column') {|s|
|
592
|
-
if s.to_i.to_s == s
|
593
|
-
time_value = s.to_i
|
594
|
-
else
|
595
|
-
require 'time'
|
596
|
-
time_value = Time.parse(s).to_i
|
597
|
-
end
|
598
|
-
}
|
599
|
-
op.on('-o', '--output DIR', 'output directory') {|s|
|
600
|
-
outdir = s
|
601
|
-
}
|
602
|
-
op.on('-s', '--split-size SIZE_IN_KB', "size of each parts (default: #{split_size_kb})", Integer) {|i|
|
603
|
-
split_size_kb = i
|
604
|
-
}
|
605
|
-
op.on('--error-record-output FILE', 'error records output file; default=NULL output stream') {|s|
|
606
|
-
error_record_outdir = s
|
607
|
-
}
|
608
|
-
op.on('--dry-run', 'show samples as JSON and exit', FalseClass) {|b|
|
609
|
-
dry_run = b
|
610
|
-
}
|
611
|
-
op.on('--delimiter CHAR', 'delimiter CHAR; default="," at csv, "\t" at tsv') {|s|
|
612
|
-
delimiter = s
|
613
|
-
}
|
614
|
-
op.on('--newline', 'newline [CRLR, LR, CR]; default=CRLF') {|s|
|
615
|
-
newline = s
|
616
|
-
}
|
617
|
-
op.on('-H', '--column-header', 'first line includes column names', TrueClass) {|b|
|
618
|
-
column_header = b
|
619
|
-
}
|
620
|
-
op.on('-h', '--columns NAME,NAME,...', 'column names (use --column-header instead if the first line has column names)') {|s|
|
621
|
-
columns = s
|
622
|
-
}
|
623
|
-
op.on('--column-types TYPE,TYPE,...', 'column types [string, int, long]') {|s|
|
624
|
-
column_types = s
|
625
|
-
}
|
626
|
-
op.on('--type-conversion-error TYPE', 'type conversion error [skip,null]; default=skip') {|s|
|
627
|
-
type_conversion_error = s
|
628
|
-
}
|
629
|
-
op.on('--exclude-columns NAME,NAME,...', 'exclude columns') {|s|
|
630
|
-
exclude_columns = s
|
631
|
-
}
|
632
|
-
op.on('--only-columns NAME,NAME,...', 'only columns') {|s|
|
633
|
-
only_columns = s
|
634
|
-
}
|
635
|
-
|
636
|
-
files = op.cmd_parse
|
637
|
-
files = [files] unless files.is_a?(Array) # TODO ruby 1.9
|
638
|
-
|
639
|
-
# options validation
|
640
|
-
#unless column_types
|
641
|
-
# $stderr.puts "--column-types TYPE,TYPE,... option is required."
|
642
|
-
# exit 1
|
643
|
-
#end
|
644
|
-
unless outdir
|
645
|
-
$stderr.puts "-o, --output DIR option is required."
|
646
|
-
exit 1
|
647
|
-
end
|
648
|
-
|
649
|
-
return [ format, compress, encoding,
|
650
|
-
time_column, time_format, time_value,
|
651
|
-
outdir, split_size_kb, error_record_output, dry_run,
|
652
|
-
delimiter, newline, column_header, columns, column_types,
|
653
|
-
type_conversion_error, exclude_columns, only_columns, files ]
|
654
|
-
end
|
655
|
-
|
656
|
-
private
|
657
|
-
def upload_parts2_config(op)
|
658
|
-
format = 'csv'
|
659
|
-
compress = 'none'
|
660
|
-
encoding = 'utf-8'
|
661
|
-
time_column = 'time'
|
662
|
-
time_format = nil
|
663
|
-
time_value = nil
|
664
|
-
outdir = nil
|
665
|
-
split_size_kb = PART_SPLIT_SIZE / 1024 # kb
|
666
|
-
error_record_output = nil
|
667
|
-
dry_run = false
|
668
|
-
|
669
|
-
delimiter = ','
|
670
|
-
newline = 'CRLF'
|
671
|
-
column_header = nil
|
672
|
-
columns = nil
|
673
|
-
column_types = nil
|
674
|
-
type_conversion_error = 'skip'
|
675
|
-
exclude_columns = nil
|
676
|
-
only_columns = nil
|
677
|
-
|
678
|
-
auto_perform = false
|
679
|
-
auto_commit = false
|
680
|
-
parallel = 2
|
681
|
-
|
682
|
-
# prepare_parts
|
683
|
-
op.on('-f', '--format NAME', 'source file format [csv, tsv]; default=csv') {|s|
|
684
|
-
format = s
|
685
|
-
}
|
686
|
-
op.on('-C', '--compress TYPE', 'compressed type [gzip, none]; default=auto detect') {|s|
|
687
|
-
compress = s
|
688
|
-
}
|
689
|
-
op.on('-e', '--encoding TYPE', 'encoding type [utf-8]') {|s|
|
690
|
-
encoding = s
|
691
|
-
}
|
692
|
-
op.on('-t', '--time-column NAME', 'name of the time column') {|s|
|
693
|
-
time_column = s
|
694
|
-
}
|
695
|
-
op.on('-T', '--time-format', 'STRF_FORMAT; default=auto detect') {|s|
|
696
|
-
time_format = s
|
697
|
-
}
|
698
|
-
op.on('--time-value TIME', 'long value of the time column') {|s|
|
699
|
-
if s.to_i.to_s == s
|
700
|
-
time_value = s.to_i
|
701
|
-
else
|
702
|
-
require 'time'
|
703
|
-
time_value = Time.parse(s).to_i
|
704
|
-
end
|
705
|
-
}
|
706
|
-
op.on('-o', '--output DIR', 'output directory') {|s|
|
707
|
-
outdir = s
|
708
|
-
}
|
709
|
-
op.on('-s', '--split-size SIZE_IN_KB', "size of each parts (default: #{split_size_kb})", Integer) {|i|
|
710
|
-
split_size_kb = i
|
711
|
-
}
|
712
|
-
op.on('--error-record-output FILE', 'error records output file; default=NULL output stream') {|s|
|
713
|
-
error_record_outdir = s
|
714
|
-
}
|
715
|
-
op.on('--dry-run', 'show samples as JSON and exit', FalseClass) {|b|
|
716
|
-
dry_run = b
|
717
|
-
}
|
718
|
-
op.on('--delimiter CHAR', 'delimiter CHAR; default="," at csv, "\t" at tsv') {|s|
|
719
|
-
delimiter = s
|
720
|
-
}
|
721
|
-
op.on('--newline', 'newline [CRLR, LR, CR]; default=CRLF') {|s|
|
722
|
-
newline = s
|
723
|
-
}
|
724
|
-
op.on('-H', '--column-header', 'first line includes column names', TrueClass) {|b|
|
725
|
-
column_header = b
|
726
|
-
}
|
727
|
-
op.on('-h', '--columns NAME,NAME,...', 'column names (use --column-header instead if the first line has column names)') {|s|
|
728
|
-
columns = s
|
729
|
-
}
|
730
|
-
op.on('--column-types TYPE,TYPE,...', 'column types [string, int, long]') {|s|
|
731
|
-
column_types = s
|
732
|
-
}
|
733
|
-
op.on('--type-conversion-error TYPE', 'type conversion error [skip,null]; default=skip') {|s|
|
734
|
-
type_conversion_error = s
|
735
|
-
}
|
736
|
-
op.on('--exclude-columns NAME,NAME,...', 'exclude columns') {|s|
|
737
|
-
exclude_columns = s
|
738
|
-
}
|
739
|
-
op.on('--only-columns NAME,NAME,...', 'only columns') {|s|
|
740
|
-
only_columns = s
|
741
|
-
}
|
742
|
-
# upload_parts
|
743
|
-
op.on('--auto-perform', 'perform bulk import job automatically', TrueClass) {|b|
|
744
|
-
auto_perform = b
|
745
|
-
}
|
746
|
-
op.on('--auto-commit', 'commit bulk import job automatically', FalseClass) {|b|
|
747
|
-
auto_commit = b
|
748
|
-
}
|
749
|
-
op.on('--parallel NUM', 'upload in parallel (default: 2; max 8)', Integer) {|i|
|
750
|
-
parallel = i
|
751
|
-
}
|
752
|
-
|
753
|
-
files = op.cmd_parse
|
754
|
-
files = [files] unless files.is_a?(Array) # TODO ruby 1.9
|
755
|
-
|
756
|
-
# options validation
|
757
|
-
#unless column_types
|
758
|
-
# $stderr.puts "--column-types TYPE,TYPE,... option is required."
|
759
|
-
# exit 1
|
760
|
-
#end
|
761
|
-
unless outdir
|
762
|
-
$stderr.puts "-o, --output DIR option is required."
|
763
|
-
exit 1
|
764
|
-
end
|
765
|
-
|
766
|
-
return [ format, compress, encoding,
|
767
|
-
time_column, time_format, time_value,
|
768
|
-
outdir, split_size_kb, error_record_output, dry_run,
|
769
|
-
delimiter, newline, column_header, columns, column_types,
|
770
|
-
type_conversion_error, exclude_columns, only_columns,
|
771
|
-
auto_perform, auto_commit, parallel, files ]
|
431
|
+
puts "This command is moved to 'td import:prepare' since 0.10.85."
|
772
432
|
end
|
773
433
|
|
774
434
|
private
|
data/lib/td/command/import.rb
CHANGED
@@ -35,6 +35,10 @@ module Command
|
|
35
35
|
import_generic(APP_OPTION_UPLOAD)
|
36
36
|
end
|
37
37
|
|
38
|
+
def import_auto(op)
|
39
|
+
import_generic(APP_OPTION_UPLOAD, true)
|
40
|
+
end
|
41
|
+
|
38
42
|
def import_perform(op)
|
39
43
|
require 'td/command/bulk_import'
|
40
44
|
bulk_import_perform(op)
|
@@ -66,7 +70,7 @@ module Command
|
|
66
70
|
end
|
67
71
|
|
68
72
|
private
|
69
|
-
def import_generic(subcmd)
|
73
|
+
def import_generic(subcmd, auto=false)
|
70
74
|
# has java runtime
|
71
75
|
check_java
|
72
76
|
|
@@ -91,6 +95,10 @@ module Command
|
|
91
95
|
else
|
92
96
|
java_args << ARGV
|
93
97
|
end
|
98
|
+
if auto
|
99
|
+
java_args << "--auto-perform"
|
100
|
+
java_args << "--auto-commit"
|
101
|
+
end
|
94
102
|
|
95
103
|
# TODO consider parameters including spaces; don't use join(' ')
|
96
104
|
cmd = "#{JAVA_COMMAND} #{jvm_opts.join(' ')} #{java_opts.join(' ')} #{sysprops.join(' ')} #{java_args.join(' ')}"
|
data/lib/td/command/list.rb
CHANGED
@@ -234,10 +234,8 @@ module List
|
|
234
234
|
add_list 'bulk_import:show', %w[name], 'Show list of uploaded parts', 'bulk_import:show'
|
235
235
|
add_list 'bulk_import:create', %w[name db table], 'Create a new bulk import session to the the table', 'bulk_import:create logs_201201 example_db event_logs'
|
236
236
|
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/'
|
237
|
-
add_list 'bulk_import:prepare_parts2', %w[files_], 'Convert files into part file format', 'bulk_import:prepare_parts2 logs/*.csv --format csv --columns time,uid,price,count --column-types long,string,long,int --time-column "time" -o parts/'
|
238
237
|
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'
|
239
238
|
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'
|
240
|
-
add_list 'bulk_import:upload_parts2', %w[name files_], 'Upload or re-upload files into a bulk import session', 'bulk_import:upload_parts parts/* --parallel 4'
|
241
239
|
add_list 'bulk_import:delete_part', %w[name id], 'Delete a uploaded file from a bulk import session', 'bulk_import:delete_part logs_201201 01h'
|
242
240
|
add_list 'bulk_import:delete_parts', %w[name ids_], 'Delete uploaded files from a bulk import session', 'bulk_import:delete_parts logs_201201 01h 02h 03h'
|
243
241
|
add_list 'bulk_import:perform', %w[name], 'Start to validate and convert uploaded files', 'bulk_import:perform logs_201201'
|
@@ -252,6 +250,7 @@ module List
|
|
252
250
|
add_list 'import:create', %w[name db table], 'Create a new bulk import session to the the table', 'import:create logs_201201 example_db event_logs'
|
253
251
|
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/'
|
254
252
|
add_list 'import:upload', %w[name files_], 'Upload or re-upload files into a bulk import session', 'import:upload parts/* --parallel 4'
|
253
|
+
add_list 'import:auto', %w[name files_], 'Upload files and automatically perform and commit the data', 'import:auto parts/* --parallel 4'
|
255
254
|
add_list 'import:perform', %w[name], 'Start to validate and convert uploaded files', 'import:perform logs_201201'
|
256
255
|
add_list 'import:error_records', %w[name], 'Show records which did not pass validations', 'import:error_records logs_201201'
|
257
256
|
add_list 'import:commit', %w[name], 'Start to commit a performed bulk import session', 'import:commit logs_201201'
|
@@ -374,6 +373,8 @@ module List
|
|
374
373
|
add_alias 'bulk_import', 'bulk_import:show'
|
375
374
|
add_alias 'bulk_imports', 'bulk_import:list'
|
376
375
|
|
376
|
+
add_alias 'import', 'import:show'
|
377
|
+
|
377
378
|
add_alias 'job', 'job:show'
|
378
379
|
add_alias 'jobs', 'job:list'
|
379
380
|
add_alias 'kill', 'job:kill'
|
@@ -426,7 +427,6 @@ module List
|
|
426
427
|
add_guess 'show-job', 'job:show'
|
427
428
|
add_guess 'show-jobs', 'job:list'
|
428
429
|
add_guess 'server-status', 'server:status'
|
429
|
-
add_alias 'import', 'import:upload'
|
430
430
|
|
431
431
|
finishup
|
432
432
|
end
|
data/lib/td/command/runner.rb
CHANGED
@@ -42,7 +42,8 @@ Basic commands:
|
|
42
42
|
table # create/delete/list/import/export/tail tables
|
43
43
|
query # issue a query
|
44
44
|
job # show/kill/list jobs
|
45
|
-
|
45
|
+
import # manage bulk import sessions (Java based fast processing)
|
46
|
+
bulk_import # manage bulk import sessions (Old Ruby-based implementation)
|
46
47
|
result # create/delete/list result URLs
|
47
48
|
|
48
49
|
Additional commands:
|
data/lib/td/version.rb
CHANGED
metadata
CHANGED
@@ -1,34 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: td
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
5
|
-
prerelease:
|
4
|
+
version: 0.10.86
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Treasure Data, Inc.
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-26 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: msgpack
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 0.4.4
|
22
|
-
- -
|
20
|
+
- - '!='
|
23
21
|
- !ruby/object:Gem::Version
|
24
22
|
version: 0.5.0
|
25
|
-
- -
|
23
|
+
- - '!='
|
26
24
|
- !ruby/object:Gem::Version
|
27
25
|
version: 0.5.1
|
28
|
-
- -
|
26
|
+
- - '!='
|
29
27
|
- !ruby/object:Gem::Version
|
30
28
|
version: 0.5.2
|
31
|
-
- -
|
29
|
+
- - '!='
|
32
30
|
- !ruby/object:Gem::Version
|
33
31
|
version: 0.5.3
|
34
32
|
- - <
|
@@ -37,21 +35,20 @@ dependencies:
|
|
37
35
|
type: :runtime
|
38
36
|
prerelease: false
|
39
37
|
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
38
|
requirements:
|
42
|
-
- -
|
39
|
+
- - '>='
|
43
40
|
- !ruby/object:Gem::Version
|
44
41
|
version: 0.4.4
|
45
|
-
- -
|
42
|
+
- - '!='
|
46
43
|
- !ruby/object:Gem::Version
|
47
44
|
version: 0.5.0
|
48
|
-
- -
|
45
|
+
- - '!='
|
49
46
|
- !ruby/object:Gem::Version
|
50
47
|
version: 0.5.1
|
51
|
-
- -
|
48
|
+
- - '!='
|
52
49
|
- !ruby/object:Gem::Version
|
53
50
|
version: 0.5.2
|
54
|
-
- -
|
51
|
+
- - '!='
|
55
52
|
- !ruby/object:Gem::Version
|
56
53
|
version: 0.5.3
|
57
54
|
- - <
|
@@ -60,7 +57,6 @@ dependencies:
|
|
60
57
|
- !ruby/object:Gem::Dependency
|
61
58
|
name: yajl-ruby
|
62
59
|
requirement: !ruby/object:Gem::Requirement
|
63
|
-
none: false
|
64
60
|
requirements:
|
65
61
|
- - ~>
|
66
62
|
- !ruby/object:Gem::Version
|
@@ -68,7 +64,6 @@ dependencies:
|
|
68
64
|
type: :runtime
|
69
65
|
prerelease: false
|
70
66
|
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
none: false
|
72
67
|
requirements:
|
73
68
|
- - ~>
|
74
69
|
- !ruby/object:Gem::Version
|
@@ -76,23 +71,20 @@ dependencies:
|
|
76
71
|
- !ruby/object:Gem::Dependency
|
77
72
|
name: hirb
|
78
73
|
requirement: !ruby/object:Gem::Requirement
|
79
|
-
none: false
|
80
74
|
requirements:
|
81
|
-
- -
|
75
|
+
- - '>='
|
82
76
|
- !ruby/object:Gem::Version
|
83
77
|
version: 0.4.5
|
84
78
|
type: :runtime
|
85
79
|
prerelease: false
|
86
80
|
version_requirements: !ruby/object:Gem::Requirement
|
87
|
-
none: false
|
88
81
|
requirements:
|
89
|
-
- -
|
82
|
+
- - '>='
|
90
83
|
- !ruby/object:Gem::Version
|
91
84
|
version: 0.4.5
|
92
85
|
- !ruby/object:Gem::Dependency
|
93
86
|
name: parallel
|
94
87
|
requirement: !ruby/object:Gem::Requirement
|
95
|
-
none: false
|
96
88
|
requirements:
|
97
89
|
- - ~>
|
98
90
|
- !ruby/object:Gem::Version
|
@@ -100,7 +92,6 @@ dependencies:
|
|
100
92
|
type: :runtime
|
101
93
|
prerelease: false
|
102
94
|
version_requirements: !ruby/object:Gem::Requirement
|
103
|
-
none: false
|
104
95
|
requirements:
|
105
96
|
- - ~>
|
106
97
|
- !ruby/object:Gem::Version
|
@@ -108,7 +99,6 @@ dependencies:
|
|
108
99
|
- !ruby/object:Gem::Dependency
|
109
100
|
name: td-client
|
110
101
|
requirement: !ruby/object:Gem::Requirement
|
111
|
-
none: false
|
112
102
|
requirements:
|
113
103
|
- - ~>
|
114
104
|
- !ruby/object:Gem::Version
|
@@ -116,7 +106,6 @@ dependencies:
|
|
116
106
|
type: :runtime
|
117
107
|
prerelease: false
|
118
108
|
version_requirements: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
109
|
requirements:
|
121
110
|
- - ~>
|
122
111
|
- !ruby/object:Gem::Version
|
@@ -124,7 +113,6 @@ dependencies:
|
|
124
113
|
- !ruby/object:Gem::Dependency
|
125
114
|
name: td-logger
|
126
115
|
requirement: !ruby/object:Gem::Requirement
|
127
|
-
none: false
|
128
116
|
requirements:
|
129
117
|
- - ~>
|
130
118
|
- !ruby/object:Gem::Version
|
@@ -132,7 +120,6 @@ dependencies:
|
|
132
120
|
type: :runtime
|
133
121
|
prerelease: false
|
134
122
|
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
none: false
|
136
123
|
requirements:
|
137
124
|
- - ~>
|
138
125
|
- !ruby/object:Gem::Version
|
@@ -140,7 +127,6 @@ dependencies:
|
|
140
127
|
- !ruby/object:Gem::Dependency
|
141
128
|
name: rubyzip
|
142
129
|
requirement: !ruby/object:Gem::Requirement
|
143
|
-
none: false
|
144
130
|
requirements:
|
145
131
|
- - ~>
|
146
132
|
- !ruby/object:Gem::Version
|
@@ -148,7 +134,6 @@ dependencies:
|
|
148
134
|
type: :runtime
|
149
135
|
prerelease: false
|
150
136
|
version_requirements: !ruby/object:Gem::Requirement
|
151
|
-
none: false
|
152
137
|
requirements:
|
153
138
|
- - ~>
|
154
139
|
- !ruby/object:Gem::Version
|
@@ -156,7 +141,6 @@ dependencies:
|
|
156
141
|
- !ruby/object:Gem::Dependency
|
157
142
|
name: rake
|
158
143
|
requirement: !ruby/object:Gem::Requirement
|
159
|
-
none: false
|
160
144
|
requirements:
|
161
145
|
- - ~>
|
162
146
|
- !ruby/object:Gem::Version
|
@@ -164,7 +148,6 @@ dependencies:
|
|
164
148
|
type: :development
|
165
149
|
prerelease: false
|
166
150
|
version_requirements: !ruby/object:Gem::Requirement
|
167
|
-
none: false
|
168
151
|
requirements:
|
169
152
|
- - ~>
|
170
153
|
- !ruby/object:Gem::Version
|
@@ -172,7 +155,6 @@ dependencies:
|
|
172
155
|
- !ruby/object:Gem::Dependency
|
173
156
|
name: rspec
|
174
157
|
requirement: !ruby/object:Gem::Requirement
|
175
|
-
none: false
|
176
158
|
requirements:
|
177
159
|
- - ~>
|
178
160
|
- !ruby/object:Gem::Version
|
@@ -180,7 +162,6 @@ dependencies:
|
|
180
162
|
type: :development
|
181
163
|
prerelease: false
|
182
164
|
version_requirements: !ruby/object:Gem::Requirement
|
183
|
-
none: false
|
184
165
|
requirements:
|
185
166
|
- - ~>
|
186
167
|
- !ruby/object:Gem::Version
|
@@ -188,7 +169,6 @@ dependencies:
|
|
188
169
|
- !ruby/object:Gem::Dependency
|
189
170
|
name: simplecov
|
190
171
|
requirement: !ruby/object:Gem::Requirement
|
191
|
-
none: false
|
192
172
|
requirements:
|
193
173
|
- - ~>
|
194
174
|
- !ruby/object:Gem::Version
|
@@ -196,7 +176,6 @@ dependencies:
|
|
196
176
|
type: :development
|
197
177
|
prerelease: false
|
198
178
|
version_requirements: !ruby/object:Gem::Requirement
|
199
|
-
none: false
|
200
179
|
requirements:
|
201
180
|
- - ~>
|
202
181
|
- !ruby/object:Gem::Version
|
@@ -281,33 +260,26 @@ files:
|
|
281
260
|
- td.gemspec
|
282
261
|
homepage: http://treasure-data.com/
|
283
262
|
licenses: []
|
263
|
+
metadata: {}
|
284
264
|
post_install_message:
|
285
265
|
rdoc_options: []
|
286
266
|
require_paths:
|
287
267
|
- lib
|
288
268
|
required_ruby_version: !ruby/object:Gem::Requirement
|
289
|
-
none: false
|
290
269
|
requirements:
|
291
|
-
- -
|
270
|
+
- - '>='
|
292
271
|
- !ruby/object:Gem::Version
|
293
272
|
version: '0'
|
294
|
-
segments:
|
295
|
-
- 0
|
296
|
-
hash: -2194512597141251482
|
297
273
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
298
|
-
none: false
|
299
274
|
requirements:
|
300
|
-
- -
|
275
|
+
- - '>='
|
301
276
|
- !ruby/object:Gem::Version
|
302
277
|
version: '0'
|
303
|
-
segments:
|
304
|
-
- 0
|
305
|
-
hash: -2194512597141251482
|
306
278
|
requirements: []
|
307
279
|
rubyforge_project:
|
308
|
-
rubygems_version:
|
280
|
+
rubygems_version: 2.0.2
|
309
281
|
signing_key:
|
310
|
-
specification_version:
|
282
|
+
specification_version: 4
|
311
283
|
summary: CLI to manage data on Treasure Data, the Hadoop-based cloud data warehousing
|
312
284
|
test_files:
|
313
285
|
- spec/file_reader/filter_spec.rb
|