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 +12 -10
- data/lib/hbasegate/htable.rb +13 -11
- data/lib/hbasegate/result_scanner.rb +1 -1
- data/lib/hbasegate/version.rb +1 -1
- metadata +15 -16
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
|
|
44
|
-
|
|
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', [
|
|
47
|
-
$ r = table.get('me', [
|
|
48
|
-
$ r = table.get('me', [
|
|
49
|
-
$
|
|
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', [
|
|
52
|
-
$ r = table.delete('me', [
|
|
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
|
|
data/lib/hbasegate/htable.rb
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
|
22
|
-
def put(key,
|
|
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
|
-
(
|
|
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
|
|
31
|
-
def delete(key,
|
|
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
|
-
|
|
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
|
|
52
|
-
def
|
|
53
|
-
(
|
|
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)
|
data/lib/hbasegate/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hbasegate
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
5
|
-
|
|
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-
|
|
12
|
+
date: 2013-04-18 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bundler
|
|
16
|
-
|
|
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.
|
|
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
|
-
...
|