hog 0.0.1 → 0.0.2

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/hog/field.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  module Hog
2
2
  class Field
3
3
  attr_reader :opts
4
+ attr_reader :name
5
+ attr_reader :type
4
6
 
5
7
  def initialize(type, name, opts={})
6
8
  @name = name
@@ -0,0 +1,12 @@
1
+ require 'hog/pig_schema'
2
+ module Hog
3
+ class HiveSchema < PigSchema
4
+ XLATEMAP = {
5
+ "chararray" => "string"
6
+ }
7
+ def field(f)
8
+ "#{f.name} #{XLATEMAP[f.type] || f.type}"
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module Hog
2
+ class PigSchema
3
+ def schema(tuple)
4
+ "\n--\n-- This schema was auto generated by Hog v#{Hog::VERSION}.\n--\n#{tuple.fields.map{|f| "\t#{field(f)} -- #{f.opts.to_s}" }.join(",\n")}"
5
+ end
6
+
7
+ def field(f)
8
+ "#{f.name}:#{f.type}"
9
+ end
10
+
11
+ end
12
+ end
data/lib/hog/tuple.rb CHANGED
@@ -4,10 +4,20 @@
4
4
 
5
5
  module Hog
6
6
  class Tuple
7
+ attr_reader :fields
8
+ attr_reader :name
9
+
10
+ SCHEMAS = {
11
+ :udf => UdfSchema.new,
12
+ :pig => PigSchema.new,
13
+ :hive => HiveSchema.new
14
+ }
15
+
16
+
7
17
  def initialize(name, block)
8
18
  @name = name
9
19
  @fields = []
10
- self.instance_eval &block
20
+ self.instance_eval(&block)
11
21
  end
12
22
 
13
23
  def process(hsh)
@@ -27,6 +37,10 @@ module Hog
27
37
  "(#{@fields.map{|f| f.to_s }.join(',')})"
28
38
  end
29
39
 
40
+ def schema(kind=:udf)
41
+ SCHEMAS[kind].schema(self)
42
+ end
43
+
30
44
  def method_missing(meth, *args, &block)
31
45
  if [:chararray, :float, :double, :int, :long, :map].include?(meth)
32
46
  f = Field.new(meth.to_s, *args)
@@ -35,7 +49,7 @@ module Hog
35
49
  else
36
50
  super
37
51
  end
38
- end
52
+ end
39
53
  end
40
54
  end
41
55
 
@@ -0,0 +1,11 @@
1
+ module Hog
2
+ class UdfSchema
3
+ def schema(tuple)
4
+ "(#{@fields.map{|f| field(f) }.join(',')})"
5
+ end
6
+
7
+ def field(f)
8
+ f.to_s
9
+ end
10
+ end
11
+ end
data/lib/hog/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hog
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/hog.rb CHANGED
@@ -1,8 +1,11 @@
1
1
  require "hog/version"
2
2
  require 'json'
3
- require 'hog/tuple'
4
3
  require 'hog/field'
5
4
  require 'hog/utils'
5
+ require 'hog/pig_schema'
6
+ require 'hog/hive_schema'
7
+ require 'hog/udf_schema'
8
+ require 'hog/tuple'
6
9
 
7
10
  module Hog
8
11
  class << self
metadata CHANGED
@@ -1,48 +1,50 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.2
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - jondot
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-18 00:00:00.000000000 Z
12
+ date: 2014-08-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
16
+ version_requirements: !ruby/object:Gem::Requirement
18
17
  requirements:
19
- - - ~>
18
+ - - "~>"
20
19
  - !ruby/object:Gem::Version
21
20
  version: '1.6'
22
- type: :development
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
21
  none: false
22
+ requirement: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '1.6'
27
+ none: false
28
+ prerelease: false
29
+ type: :development
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rake
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
32
+ version_requirements: !ruby/object:Gem::Requirement
34
33
  requirements:
35
- - - ! '>='
34
+ - - ">="
36
35
  - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
36
+ version: !binary |-
37
+ MA==
41
38
  none: false
39
+ requirement: !ruby/object:Gem::Requirement
42
40
  requirements:
43
- - - ! '>='
41
+ - - ">="
44
42
  - !ruby/object:Gem::Version
45
- version: '0'
43
+ version: !binary |-
44
+ MA==
45
+ none: false
46
+ prerelease: false
47
+ type: :development
46
48
  description: ''
47
49
  email:
48
50
  - jondotan@gmail.com
@@ -51,7 +53,7 @@ executables:
51
53
  extensions: []
52
54
  extra_rdoc_files: []
53
55
  files:
54
- - .gitignore
56
+ - ".gitignore"
55
57
  - Gemfile
56
58
  - LICENSE.txt
57
59
  - README.md
@@ -63,33 +65,38 @@ files:
63
65
  - hog.gemspec
64
66
  - lib/hog.rb
65
67
  - lib/hog/field.rb
68
+ - lib/hog/hive_schema.rb
69
+ - lib/hog/pig_schema.rb
66
70
  - lib/hog/testing/pig_stubs.rb
67
71
  - lib/hog/tuple.rb
72
+ - lib/hog/udf_schema.rb
68
73
  - lib/hog/utils.rb
69
74
  - lib/hog/version.rb
70
75
  homepage: ''
71
76
  licenses:
72
77
  - MIT
73
- post_install_message:
78
+ post_install_message:
74
79
  rdoc_options: []
75
80
  require_paths:
76
81
  - lib
77
82
  required_ruby_version: !ruby/object:Gem::Requirement
78
- none: false
79
83
  requirements:
80
- - - ! '>='
84
+ - - ">="
81
85
  - !ruby/object:Gem::Version
82
- version: '0'
83
- required_rubygems_version: !ruby/object:Gem::Requirement
86
+ version: !binary |-
87
+ MA==
84
88
  none: false
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
90
  requirements:
86
- - - ! '>='
91
+ - - ">="
87
92
  - !ruby/object:Gem::Version
88
- version: '0'
93
+ version: !binary |-
94
+ MA==
95
+ none: false
89
96
  requirements: []
90
- rubyforge_project:
91
- rubygems_version: 1.8.23
92
- signing_key:
97
+ rubyforge_project:
98
+ rubygems_version: 1.8.24
99
+ signing_key:
93
100
  specification_version: 3
94
101
  summary: ''
95
102
  test_files: []