piglet 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. data/README.rdoc +24 -4
  2. data/lib/piglet/field/binary_conditional.rb +15 -0
  3. data/lib/piglet/field/call_expression.rb +21 -0
  4. data/lib/piglet/field/infix_expression.rb +19 -0
  5. data/lib/piglet/field/literal.rb +20 -0
  6. data/lib/piglet/field/operators.rb +80 -0
  7. data/lib/piglet/field/prefix_expression.rb +23 -0
  8. data/lib/piglet/field/reference.rb +41 -0
  9. data/lib/piglet/field/rename.rb +13 -0
  10. data/lib/piglet/field/suffix_expression.rb +19 -0
  11. data/lib/piglet/inout/describe.rb +7 -0
  12. data/lib/piglet/inout/dump.rb +7 -0
  13. data/lib/piglet/inout/explain.rb +15 -0
  14. data/lib/piglet/inout/illustrate.rb +7 -0
  15. data/lib/piglet/inout/load.rb +31 -0
  16. data/lib/piglet/inout/output.rb +15 -0
  17. data/lib/piglet/inout/storage_types.rb +18 -0
  18. data/lib/piglet/inout/store.rb +19 -0
  19. data/lib/piglet/interpreter.rb +39 -7
  20. data/lib/piglet/relation/cogroup.rb +33 -0
  21. data/lib/piglet/relation/cross.rb +24 -0
  22. data/lib/piglet/relation/distinct.rb +18 -0
  23. data/lib/piglet/relation/filter.rb +15 -0
  24. data/lib/piglet/relation/foreach.rb +21 -0
  25. data/lib/piglet/relation/group.rb +23 -0
  26. data/lib/piglet/relation/join.rb +22 -0
  27. data/lib/piglet/relation/limit.rb +15 -0
  28. data/lib/piglet/relation/order.rb +31 -0
  29. data/lib/piglet/relation/relation.rb +179 -0
  30. data/lib/piglet/relation/sample.rb +15 -0
  31. data/lib/piglet/relation/split.rb +45 -0
  32. data/lib/piglet/relation/stream.rb +7 -0
  33. data/lib/piglet/relation/union.rb +21 -0
  34. data/lib/piglet.rb +40 -38
  35. data/spec/piglet/{field_spec.rb → field/reference_spec.rb} +22 -6
  36. data/spec/piglet/interpreter_spec.rb +51 -5
  37. data/spec/piglet/{relation_spec.rb → relation/relation_spec.rb} +6 -6
  38. data/spec/piglet/{split_spec.rb → relation/split_spec.rb} +8 -8
  39. data/spec/spec_helper.rb +0 -2
  40. metadata +39 -40
  41. data/examples/spike1.rb +0 -43
  42. data/examples/spike2.rb +0 -40
  43. data/lib/piglet/assignment.rb +0 -13
  44. data/lib/piglet/cogroup.rb +0 -31
  45. data/lib/piglet/cross.rb +0 -22
  46. data/lib/piglet/describe.rb +0 -5
  47. data/lib/piglet/distinct.rb +0 -16
  48. data/lib/piglet/dump.rb +0 -5
  49. data/lib/piglet/explain.rb +0 -13
  50. data/lib/piglet/field.rb +0 -40
  51. data/lib/piglet/field_expression_functions.rb +0 -62
  52. data/lib/piglet/field_function_expression.rb +0 -19
  53. data/lib/piglet/field_infix_expression.rb +0 -17
  54. data/lib/piglet/field_prefix_expression.rb +0 -21
  55. data/lib/piglet/field_rename.rb +0 -11
  56. data/lib/piglet/field_suffix_expression.rb +0 -17
  57. data/lib/piglet/filter.rb +0 -13
  58. data/lib/piglet/foreach.rb +0 -19
  59. data/lib/piglet/group.rb +0 -21
  60. data/lib/piglet/illustrate.rb +0 -5
  61. data/lib/piglet/join.rb +0 -20
  62. data/lib/piglet/limit.rb +0 -13
  63. data/lib/piglet/load.rb +0 -31
  64. data/lib/piglet/load_and_store.rb +0 -16
  65. data/lib/piglet/order.rb +0 -29
  66. data/lib/piglet/relation.rb +0 -177
  67. data/lib/piglet/sample.rb +0 -13
  68. data/lib/piglet/split.rb +0 -41
  69. data/lib/piglet/store.rb +0 -17
  70. data/lib/piglet/storing.rb +0 -13
  71. data/lib/piglet/stream.rb +0 -5
  72. data/lib/piglet/union.rb +0 -19
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: piglet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Theo Hultberg
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-03 00:00:00 +01:00
12
+ date: 2010-01-07 00:00:00 +01:00
13
13
  default_executable: piglet
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -38,44 +38,43 @@ files:
38
38
  - README.rdoc
39
39
  - Rakefile
40
40
  - bin/piglet
41
- - examples/spike1.rb
42
- - examples/spike2.rb
43
41
  - lib/piglet.rb
44
- - lib/piglet/assignment.rb
45
- - lib/piglet/cogroup.rb
46
- - lib/piglet/cross.rb
47
- - lib/piglet/describe.rb
48
- - lib/piglet/distinct.rb
49
- - lib/piglet/dump.rb
50
- - lib/piglet/explain.rb
51
- - lib/piglet/field.rb
52
- - lib/piglet/field_expression_functions.rb
53
- - lib/piglet/field_function_expression.rb
54
- - lib/piglet/field_infix_expression.rb
55
- - lib/piglet/field_prefix_expression.rb
56
- - lib/piglet/field_rename.rb
57
- - lib/piglet/field_suffix_expression.rb
58
- - lib/piglet/filter.rb
59
- - lib/piglet/foreach.rb
60
- - lib/piglet/group.rb
61
- - lib/piglet/illustrate.rb
42
+ - lib/piglet/field/binary_conditional.rb
43
+ - lib/piglet/field/call_expression.rb
44
+ - lib/piglet/field/infix_expression.rb
45
+ - lib/piglet/field/literal.rb
46
+ - lib/piglet/field/operators.rb
47
+ - lib/piglet/field/prefix_expression.rb
48
+ - lib/piglet/field/reference.rb
49
+ - lib/piglet/field/rename.rb
50
+ - lib/piglet/field/suffix_expression.rb
51
+ - lib/piglet/inout/describe.rb
52
+ - lib/piglet/inout/dump.rb
53
+ - lib/piglet/inout/explain.rb
54
+ - lib/piglet/inout/illustrate.rb
55
+ - lib/piglet/inout/load.rb
56
+ - lib/piglet/inout/output.rb
57
+ - lib/piglet/inout/storage_types.rb
58
+ - lib/piglet/inout/store.rb
62
59
  - lib/piglet/interpreter.rb
63
- - lib/piglet/join.rb
64
- - lib/piglet/limit.rb
65
- - lib/piglet/load.rb
66
- - lib/piglet/load_and_store.rb
67
- - lib/piglet/order.rb
68
- - lib/piglet/relation.rb
69
- - lib/piglet/sample.rb
70
- - lib/piglet/split.rb
71
- - lib/piglet/store.rb
72
- - lib/piglet/storing.rb
73
- - lib/piglet/stream.rb
74
- - lib/piglet/union.rb
75
- - spec/piglet/field_spec.rb
60
+ - lib/piglet/relation/cogroup.rb
61
+ - lib/piglet/relation/cross.rb
62
+ - lib/piglet/relation/distinct.rb
63
+ - lib/piglet/relation/filter.rb
64
+ - lib/piglet/relation/foreach.rb
65
+ - lib/piglet/relation/group.rb
66
+ - lib/piglet/relation/join.rb
67
+ - lib/piglet/relation/limit.rb
68
+ - lib/piglet/relation/order.rb
69
+ - lib/piglet/relation/relation.rb
70
+ - lib/piglet/relation/sample.rb
71
+ - lib/piglet/relation/split.rb
72
+ - lib/piglet/relation/stream.rb
73
+ - lib/piglet/relation/union.rb
74
+ - spec/piglet/field/reference_spec.rb
76
75
  - spec/piglet/interpreter_spec.rb
77
- - spec/piglet/relation_spec.rb
78
- - spec/piglet/split_spec.rb
76
+ - spec/piglet/relation/relation_spec.rb
77
+ - spec/piglet/relation/split_spec.rb
79
78
  - spec/piglet_spec.rb
80
79
  - spec/spec.opts
81
80
  - spec/spec_helper.rb
@@ -111,9 +110,9 @@ signing_key:
111
110
  specification_version: 3
112
111
  summary: Piglet is a DSL for Pig scripts
113
112
  test_files:
114
- - spec/piglet/field_spec.rb
113
+ - spec/piglet/field/reference_spec.rb
115
114
  - spec/piglet/interpreter_spec.rb
116
- - spec/piglet/relation_spec.rb
117
- - spec/piglet/split_spec.rb
115
+ - spec/piglet/relation/relation_spec.rb
116
+ - spec/piglet/relation/split_spec.rb
118
117
  - spec/piglet_spec.rb
119
118
  - spec/spec_helper.rb
data/examples/spike1.rb DELETED
@@ -1,43 +0,0 @@
1
- # raw_ads =
2
- # LOAD '$INPUT/ads*'
3
- # USING PigStorage AS (
4
- # ad_id:chararray,
5
- # api_key:chararray,
6
- # name:chararray,
7
- # dimensions:chararray,
8
- # destination:chararray,
9
- # agent_version:chararray
10
- # );
11
- raw_ads << load('$INPUT/ads*').using(:pig_storage).as(
12
- [:ad_id, :chararray],
13
- [:api_key, :chararray],
14
- [:name, :chararray],
15
- [:dimensions, :chararray],
16
- [:destination, :chararray],
17
- [:agent_version, :chararray]
18
- )
19
-
20
- # ads =
21
- # FOREACH
22
- # (GROUP raw_ads BY ad_id PARALLEL $PARALLELISM)
23
- # GENERATE
24
- # $0 AS ad_id,
25
- # MAX($1.api_key) AS api_key,
26
- # MAX($1.name) AS name,
27
- # MAX($1.dimensions) AS dimensions,
28
- # MAX($1.destination) AS destination,
29
- # MAX($1.agent_version) AS agent_version
30
- # ;
31
- ads << (raw_ads.group(:ad_id)).foreach do |relation|
32
- [
33
- relation[0].as(:ad_id),
34
- relation[1].api_key.max.as(:api_key),
35
- relation[1].name.max.as(:name),
36
- relation[1].dimensions.max.as(:dimensions),
37
- relation[1].destination.max.as(:destination),
38
- relation[1].agent_version.max.as(:agent_version)
39
- ]
40
- end
41
-
42
- # STORE ads INTO '$OUTPUT/ads' USING PigStorage;
43
- ads.store('$OUTPUT/ads').using(:pig_storage)
data/examples/spike2.rb DELETED
@@ -1,40 +0,0 @@
1
- # raw_ads =
2
- # LOAD '$INPUT/ads*'
3
- # USING PigStorage AS (
4
- # ad_id:chararray,
5
- # api_key:chararray,
6
- # name:chararray,
7
- # dimensions:chararray,
8
- # destination:chararray,
9
- # agent_version:chararray
10
- # );
11
- raw_ads = load(
12
- '$INPUT/ads*',
13
- :using => :pig_storage,
14
- :schema => %w(ad_id api_key name dimensions destination agent_version)
15
- )
16
-
17
- # ads =
18
- # FOREACH
19
- # (GROUP raw_ads BY ad_id PARALLEL $PARALLELISM)
20
- # GENERATE
21
- # $0 AS ad_id,
22
- # MAX($1.api_key) AS api_key,
23
- # MAX($1.name) AS name,
24
- # MAX($1.dimensions) AS dimensions,
25
- # MAX($1.destination) AS destination,
26
- # MAX($1.agent_version) AS agent_version
27
- # ;
28
- ads = raw_ads.group(:ad_id, :parallel => 2).foreach do |relation|
29
- [
30
- relation[0].as(:ad_id),
31
- relation[1].api_key.as(:api_key)
32
- relation[1].name.max.as(:name)
33
- relation[1].dimensions.max.as(:dimensions)
34
- relation[1].destination.max.as(:destination)
35
- relation[1].agent_version.max.as(:agent_version)
36
- ]
37
- end
38
-
39
- # STORE ads INTO '$OUTPUT/ads' USING PigStorage;
40
- store(ads, '$OUTPUT/ads', :using => :pig_storage)
@@ -1,13 +0,0 @@
1
- module Piglet
2
- class Assignment # :nodoc:
3
- attr_reader :target
4
-
5
- def initialize(relation)
6
- @target = relation
7
- end
8
-
9
- def to_s
10
- "#{@target.alias} = #{@target.to_s}"
11
- end
12
- end
13
- end
@@ -1,31 +0,0 @@
1
- module Piglet
2
- class Cogroup # :nodoc:
3
- include Relation
4
-
5
- def initialize(relation, description)
6
- @join_fields = description.reject { |k, v| ! (k.is_a?(Relation)) }
7
- @sources = @join_fields.keys
8
- @parallel = description[:parallel]
9
- end
10
-
11
- def to_s
12
- joins = @sources.map do |s|
13
- fields = @join_fields[s]
14
- if fields.is_a?(Enumerable) && fields.size > 1 && (fields.last == :inner || fields.last == :outer)
15
- inout = fields.last.to_s.upcase
16
- fields = fields[0..-2]
17
- end
18
- if fields.is_a?(Enumerable) && fields.size > 1
19
- str = "#{s.alias} BY (#{fields.join(', ')})"
20
- else
21
- str = "#{s.alias} BY #{fields}"
22
- end
23
- str << " #{inout}" if inout
24
- str
25
- end
26
- str = "COGROUP #{joins.join(', ')}"
27
- str << " PARALLEL #{@parallel}" if @parallel
28
- str
29
- end
30
- end
31
- end
data/lib/piglet/cross.rb DELETED
@@ -1,22 +0,0 @@
1
- module Piglet
2
- class Cross # :nodoc:
3
- include Relation
4
-
5
- def initialize(relations, options={})
6
- options ||= {}
7
- @sources, @parallel = relations, options[:parallel]
8
- end
9
-
10
- def to_s
11
- str = "CROSS #{source_aliases.join(', ')}"
12
- str << " PARALLEL #{@parallel}" if @parallel
13
- str
14
- end
15
-
16
- private
17
-
18
- def source_aliases
19
- @sources.map { |s| s.alias }
20
- end
21
- end
22
- end
@@ -1,5 +0,0 @@
1
- module Piglet
2
- class Describe # :nodoc:
3
- include Storing
4
- end
5
- end
@@ -1,16 +0,0 @@
1
- module Piglet
2
- class Distinct # :nodoc:
3
- include Relation
4
-
5
- def initialize(relation, options={})
6
- options ||= {}
7
- @sources, @parallel = [relation], options[:parallel]
8
- end
9
-
10
- def to_s
11
- str = "DISTINCT #{@sources.first.alias}"
12
- str << " PARALLEL #{@parallel}" if @parallel
13
- str
14
- end
15
- end
16
- end
data/lib/piglet/dump.rb DELETED
@@ -1,5 +0,0 @@
1
- module Piglet
2
- class Dump # :nodoc:
3
- include Storing
4
- end
5
- end
@@ -1,13 +0,0 @@
1
- module Piglet
2
- class Explain # :nodoc:
3
- include Storing
4
-
5
- def to_s
6
- if relation.nil?
7
- "EXPLAIN"
8
- else
9
- super
10
- end
11
- end
12
- end
13
- end
data/lib/piglet/field.rb DELETED
@@ -1,40 +0,0 @@
1
- module Piglet
2
- class Field # :nodoc:
3
- include FieldExpressionFunctions
4
-
5
- def initialize(name, relation=nil, options=nil)
6
- options ||= {}
7
- @name, @parent = name, relation
8
- @explicit_ancestry = options[:explicit_ancestry] || false
9
- end
10
-
11
- def simple?
12
- true
13
- end
14
-
15
- def method_missing(name, *args)
16
- if name.to_s =~ /^\w+$/ && args.empty?
17
- Field.new(name, self, :explicit_ancestry => true)
18
- else
19
- super
20
- end
21
- end
22
-
23
- def [](n)
24
- Field.new("\$#{n}", self, :explicit_ancestry => true)
25
- end
26
-
27
- def to_s
28
- if @explicit_ancestry
29
- if @parent.respond_to?(:alias)
30
- "#{@parent.alias}.#{@name.to_s}"
31
- else
32
- "#{@parent}.#{@name.to_s}"
33
- end
34
- else
35
- @name.to_s
36
- end
37
- end
38
- end
39
-
40
- end
@@ -1,62 +0,0 @@
1
- module Piglet
2
- module FieldExpressionFunctions # :nodoc:
3
- SYMBOLIC_OPERATORS = [:==, :>, :<, :>=, :<=, :%, :+, :-, :*, :/]
4
- FUNCTIONS = [:avg, :count, :diff, :max, :min, :size, :sum, :tokenize]
5
-
6
- FUNCTIONS.each do |fun|
7
- define_method(fun) { FieldFunctionExpression.new(fun.to_s.upcase, self) }
8
- end
9
-
10
- def empty?
11
- FieldFunctionExpression.new('IsEmpty', self)
12
- end
13
-
14
- def as(new_name)
15
- FieldRename.new(new_name, self)
16
- end
17
-
18
- def not
19
- FieldPrefixExpression.new('NOT', self)
20
- end
21
-
22
- def null?
23
- FieldSuffixExpression.new('is null', self)
24
- end
25
-
26
- def not_null?
27
- FieldSuffixExpression.new('is not null', self)
28
- end
29
-
30
- def cast(type)
31
- FieldPrefixExpression.new("(#{type.to_s})", self)
32
- end
33
-
34
- def matches(pattern)
35
- regex_options_pattern = /^\(\?.+?:(.*)\)$/
36
- pattern = pattern.to_s.sub(regex_options_pattern, '\1') if pattern.is_a?(Regexp) && pattern.to_s =~ regex_options_pattern
37
- FieldInfixExpression.new('matches', self, "'#{pattern.to_s}'")
38
- end
39
-
40
- def neg
41
- FieldPrefixExpression.new('-', self, false)
42
- end
43
-
44
- def ne(other)
45
- FieldInfixExpression.new('!=', self, other)
46
- end
47
-
48
- SYMBOLIC_OPERATORS.each do |op|
49
- define_method(op) { |other| FieldInfixExpression.new(op.to_s, self, other) }
50
- end
51
-
52
- protected
53
-
54
- def parenthesise(expr)
55
- if expr.respond_to?(:simple?) && ! expr.simple?
56
- "(#{expr})"
57
- else
58
- expr.to_s
59
- end
60
- end
61
- end
62
- end
@@ -1,19 +0,0 @@
1
- module Piglet
2
- class FieldFunctionExpression # :nodoc:
3
- include FieldExpressionFunctions
4
-
5
- def initialize(name, inner_expression, options=nil)
6
- options ||= {}
7
- @name, @inner_expression = name, inner_expression
8
- @new_name = options[:as]
9
- end
10
-
11
- def simple?
12
- false
13
- end
14
-
15
- def to_s
16
- "#{@name}(#{@inner_expression})"
17
- end
18
- end
19
- end
@@ -1,17 +0,0 @@
1
- module Piglet
2
- class FieldInfixExpression # :nodoc:
3
- include FieldExpressionFunctions
4
-
5
- def initialize(operator, left_expression, right_expression)
6
- @operator, @left_expression, @right_expression = operator, left_expression, right_expression
7
- end
8
-
9
- def simple?
10
- false
11
- end
12
-
13
- def to_s
14
- "#{parenthesise(@left_expression)} #{@operator} #{parenthesise(@right_expression)}"
15
- end
16
- end
17
- end
@@ -1,21 +0,0 @@
1
- module Piglet
2
- class FieldPrefixExpression # :nodoc:
3
- include FieldExpressionFunctions
4
-
5
- def initialize(operator, expression, space_between=true)
6
- @operator, @expression, @space_between = operator, expression, space_between
7
- end
8
-
9
- def simple?
10
- true
11
- end
12
-
13
- def to_s
14
- if @space_between
15
- "#{@operator} #{parenthesise(@expression)}"
16
- else
17
- "#{@operator}#{parenthesise(@expression)}"
18
- end
19
- end
20
- end
21
- end
@@ -1,11 +0,0 @@
1
- module Piglet
2
- class FieldRename # :nodoc:
3
- def initialize(new_name, field_expression)
4
- @new_name, @field_expression = new_name, field_expression
5
- end
6
-
7
- def to_s
8
- "#{@field_expression} AS #{@new_name}"
9
- end
10
- end
11
- end
@@ -1,17 +0,0 @@
1
- module Piglet
2
- class FieldSuffixExpression # :nodoc:
3
- include FieldExpressionFunctions
4
-
5
- def initialize(operator, expression)
6
- @operator, @expression = operator, expression
7
- end
8
-
9
- def simple?
10
- false
11
- end
12
-
13
- def to_s
14
- "#{parenthesise(@expression)} #{@operator}"
15
- end
16
- end
17
- end
data/lib/piglet/filter.rb DELETED
@@ -1,13 +0,0 @@
1
- module Piglet
2
- class Filter # :nodoc:
3
- include Relation
4
-
5
- def initialize(relation, expression)
6
- @sources, @expression = [relation], expression
7
- end
8
-
9
- def to_s
10
- "FILTER #{@sources.first.alias} BY #{@expression}"
11
- end
12
- end
13
- end
@@ -1,19 +0,0 @@
1
- module Piglet
2
- class Foreach # :nodoc:
3
- include Relation
4
-
5
- def initialize(relation, field_expressions)
6
- @sources, @field_expressions = [relation], [field_expressions].flatten
7
- end
8
-
9
- def to_s
10
- "FOREACH #{@sources.first.alias} GENERATE #{field_expressions_string}"
11
- end
12
-
13
- private
14
-
15
- def field_expressions_string
16
- @field_expressions.map { |fe| fe.to_s }.join(', ')
17
- end
18
- end
19
- end
data/lib/piglet/group.rb DELETED
@@ -1,21 +0,0 @@
1
- module Piglet
2
- class Group # :nodoc:
3
- include Relation
4
-
5
- def initialize(relation, grouping, options={})
6
- options ||= {}
7
- @sources, @grouping, @parallel = [relation], grouping, options[:parallel]
8
- end
9
-
10
- def to_s
11
- str = "GROUP #{@sources.first.alias} BY "
12
- if @grouping.size > 1
13
- str << "(#{@grouping.join(', ')})"
14
- else
15
- str << @grouping.first.to_s
16
- end
17
- str << " PARALLEL #{@parallel}" if @parallel
18
- str
19
- end
20
- end
21
- end
@@ -1,5 +0,0 @@
1
- module Piglet
2
- class Illustrate # :nodoc:
3
- include Storing
4
- end
5
- end
data/lib/piglet/join.rb DELETED
@@ -1,20 +0,0 @@
1
- module Piglet
2
- class Join # :nodoc:
3
- include Relation
4
-
5
- def initialize(relation, description)
6
- @join_fields = Hash[*description.select { |k, v| k.is_a?(Relation) }.flatten]
7
- @sources = @join_fields.keys
8
- @using = description[:using]
9
- @parallel = description[:parallel]
10
- end
11
-
12
- def to_s
13
- joins = @sources.map { |s| "#{s.alias} BY #{@join_fields[s]}" }.join(', ')
14
- str = "JOIN #{joins}"
15
- str << " USING \"#{@using.to_s}\"" if @using
16
- str << " PARALLEL #{@parallel}" if @parallel
17
- str
18
- end
19
- end
20
- end
data/lib/piglet/limit.rb DELETED
@@ -1,13 +0,0 @@
1
- module Piglet
2
- class Limit # :nodoc:
3
- include Relation
4
-
5
- def initialize(relation, n)
6
- @sources, @n = [relation], n
7
- end
8
-
9
- def to_s
10
- "LIMIT #{@sources.first.alias} #{@n}"
11
- end
12
- end
13
- end
data/lib/piglet/load.rb DELETED
@@ -1,31 +0,0 @@
1
- module Piglet
2
- class Load # :nodoc:
3
- include Relation
4
- include LoadAndStore
5
-
6
- def initialize(path, options={})
7
- options ||= {}
8
- @path, @using, @schema = path, options[:using], options[:schema]
9
- end
10
-
11
- def to_s
12
- str = "LOAD '#{@path}'"
13
- str << " USING #{resolve_load_store_function(@using)}" if @using
14
- str << " AS (#{schema_string})" if @schema
15
- str
16
- end
17
-
18
- private
19
-
20
- def schema_string
21
- @schema.map do |field|
22
- if field.is_a?(Enumerable)
23
- field.map { |f| f.to_s }.join(':')
24
- else
25
- field.to_s
26
- end
27
- end.join(', ')
28
- end
29
-
30
- end
31
- end
@@ -1,16 +0,0 @@
1
- module Piglet
2
- module LoadAndStore # :nodoc:
3
- LOAD_STORE_FUNCTIONS = {
4
- :binary_serializer => 'BinarySerializer',
5
- :binary_deserializer => 'BinaryDeserializer',
6
- :bin_storage => 'BinStorage',
7
- :pig_storage => 'PigStorage',
8
- :pig_dump => 'PigDump',
9
- :text_loader => 'TextLoader'
10
- }
11
-
12
- def resolve_load_store_function(name)
13
- LOAD_STORE_FUNCTIONS[name] || name.to_s
14
- end
15
- end
16
- end
data/lib/piglet/order.rb DELETED
@@ -1,29 +0,0 @@
1
- module Piglet
2
- class Order # :nodoc:
3
- include Relation
4
-
5
- def initialize(relation, fields, options)
6
- options ||= {}
7
- @sources, @parallel = [relation], options[:parallel]
8
- @fields = fields.is_a?(Enumerable) ? fields : [fields]
9
- end
10
-
11
- def to_s
12
- "ORDER #{@sources.first.alias} BY #{field_strings}"
13
- end
14
-
15
- private
16
-
17
- def field_strings
18
- @fields.map { |f| field_string(f) }.join(', ')
19
- end
20
-
21
- def field_string(f)
22
- if f.is_a?(Enumerable)
23
- "#{f[0]} #{f[1].to_s.upcase}"
24
- else
25
- f.to_s
26
- end
27
- end
28
- end
29
- end