hbasegate 0.2.1 → 0.2.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/README.md CHANGED
@@ -3,6 +3,8 @@ hbasegate
3
3
 
4
4
  JRuby gem wrapping Java API for HBase
5
5
 
6
+ (Use hbase-stargate for other ruby implementations)
7
+
6
8
  ## Installation
7
9
 
8
10
  Add this line to your application's Gemfile:
@@ -38,20 +40,20 @@ Get a handle to the table:
38
40
  And use it:
39
41
 
40
42
  $ r = table.get('me')
41
- $ puts r
43
+ $ puts r.to_h
42
44
 
43
- You specify column families, columns and values in an array of arrays. Each element of the inner array specifies on
44
- item.
45
+ You specify column families and qualifiers as colon separated strings. When writing, you supply a hash of
46
+ columns to values and when reading, you specify an array of columns.
45
47
 
46
- $ r = table.get('me', [['family']])
47
- $ r = table.get('me', [['family', 'column']])
48
- $ r = table.get('me', [['family1', 'column1'], ['family2', 'column2']])
49
- $ r = table.put('me', [['family1', 'column1', 'value1'], ['family2', 'column2', 'value2']])
48
+ $ r = table.get('me', ['family'])
49
+ $ r = table.get('me', ['family:qualifier'])
50
+ $ r = table.get('me', ['family1:qualifier1', 'family2:qualifier2'])
51
+ $ table.put('me', { 'family1:column1' => 'value1', 'family2:column2' => 'value2' })
50
52
  $ r = table.delete('me')
51
- $ r = table.delete('me', [['family']])
52
- $ r = table.delete('me', [['family', 'column']])
53
-
53
+ $ r = table.delete('me', ['family'])
54
+ $ r = table.delete('me', ['family:qualifier'])
54
55
 
56
+ The to_h method of the result is useful for getting a hash of the result.
55
57
 
56
58
  ## Contributing
57
59
 
@@ -11,26 +11,27 @@ module HBaseGate
11
11
  alias_method :original_put, :put
12
12
  alias_method :original_get_scanner, :get_scanner
13
13
 
14
- # Read row key with an array of family, column arrays.
14
+ # Read row key with an optional array of columns.
15
15
  def get(key, entries = nil)
16
16
  get = Get.new(key.to_java_bytes)
17
- augment_action(entries, get.method(:add_family), get.method(:add_column))
17
+ specify_columns(entries, get.method(:add_family), get.method(:add_column))
18
18
  original_get(get)
19
19
  end
20
20
 
21
- # Store row key with an array of family, column, value arrays.
22
- def put(key, entries = nil)
21
+ # Store row key with an hash of columns to values.
22
+ def put(key, column_values = nil)
23
23
  put = Put.new(key.to_java_bytes)
24
- (entries || []).each.each do |family, qualifier, value|
24
+ (column_values || {}).each do |column, value|
25
+ family, qualifier = column.split(/:/)
25
26
  put.add(family.to_java_bytes, qualifier.to_java_bytes, value.to_java_bytes)
26
27
  end
27
28
  original_put(put)
28
29
  end
29
30
 
30
- # Delete row key with an array of family, column arrays.
31
- def delete(key, entries = nil)
31
+ # Delete row key with an optional array of columns.
32
+ def delete(key, columns = nil)
32
33
  delete = Delete.new(key.to_java_bytes)
33
- augment_action(entries, delete.method(:delete_family), delete.method(:delete_column))
34
+ specify_columns(columns, delete.method(:delete_family), delete.method(:delete_column))
34
35
  original_delete(delete)
35
36
  end
36
37
 
@@ -48,9 +49,10 @@ module HBaseGate
48
49
  end
49
50
 
50
51
  private
51
- # Iterate over the entries and use the given functions on them.
52
- def augment_action(entries, family_do, qualifier_do)
53
- (entries || []).each do |family, qualifier|
52
+ # Iterate over the columns and use the given functions on them.
53
+ def specify_columns(columns, family_do, qualifier_do)
54
+ (columns || []).each do |column|
55
+ family, qualifier = column.split(/:/)
54
56
  case
55
57
  when qualifier
56
58
  qualifier_do.call(family.to_java_bytes, qualifier.to_java_bytes)
@@ -4,7 +4,7 @@ module HBaseGate
4
4
  module ResultScanner
5
5
  include Enumerable
6
6
  def each
7
- until (result = self.next).nil? do yield result; end
7
+ until (result = self.next).nil? do yield result end
8
8
  end
9
9
  end
10
10
  end
@@ -1,3 +1,3 @@
1
1
  module HBaseGate
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.2'
3
3
  end
metadata CHANGED
@@ -1,32 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hbasegate
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.2.1
4
+ version: 0.2.2
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Knut O. Hellan
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-17 00:00:00.000000000 Z
12
+ date: 2013-04-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- version_requirements: !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
17
18
  requirements:
18
19
  - - ~>
19
20
  - !ruby/object:Gem::Version
20
21
  version: '1.3'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
21
25
  none: false
22
- requirement: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.3'
27
- none: false
28
- prerelease: false
29
- type: :development
30
30
  description: JRuby gem wrapping Java API for HBase
31
31
  email:
32
32
  - knut.hellan@gmail.com
@@ -54,27 +54,26 @@ files:
54
54
  homepage: http://github.com/khellan/hbasegate
55
55
  licenses:
56
56
  - MIT
57
- post_install_message:
57
+ post_install_message:
58
58
  rdoc_options: []
59
59
  require_paths:
60
60
  - lib
61
61
  required_ruby_version: !ruby/object:Gem::Requirement
62
+ none: false
62
63
  requirements:
63
64
  - - ! '>='
64
65
  - !ruby/object:Gem::Version
65
66
  version: '0'
66
- none: false
67
67
  required_rubygems_version: !ruby/object:Gem::Requirement
68
+ none: false
68
69
  requirements:
69
70
  - - ! '>='
70
71
  - !ruby/object:Gem::Version
71
72
  version: '0'
72
- none: false
73
73
  requirements: []
74
- rubyforge_project:
75
- rubygems_version: 1.8.24
76
- signing_key:
74
+ rubyforge_project:
75
+ rubygems_version: 1.8.23
76
+ signing_key:
77
77
  specification_version: 3
78
78
  summary: More ruby friendly API than using Java directly
79
79
  test_files: []
80
- ...