sishen-hbase-ruby 0.4.2 → 0.4.3
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.txt +25 -4
- data/Rakefile +2 -2
- data/hbase-ruby.gemspec +4 -1
- data/lib/hbase/request/basic_request.rb +14 -0
- data/lib/hbase/request/row_request.rb +4 -9
- data/lib/hbase/request/table_request.rb +7 -22
- data/lib/hbase/response/row_response.rb +1 -1
- metadata +10 -1
data/README.txt
CHANGED
@@ -25,19 +25,40 @@ Here is the example:
|
|
25
25
|
require 'hbase'
|
26
26
|
|
27
27
|
client = HBase::Client.new("http://localhost:60010/api") # this url is the default.
|
28
|
-
tables = client.list_tables # list available tables
|
29
28
|
|
29
|
+
# Table Operation
|
30
|
+
tables = client.list_tables # list available tables
|
30
31
|
table = client.create_table('users', 'habbit') # create a table whose column_family is habbit
|
31
|
-
|
32
32
|
table = client.show_table('users') # show the meta info of table users
|
33
|
+
client.disable_table('users') # disable table users
|
34
|
+
client.enable_table('users') # enable table users
|
35
|
+
client.delete_table('users') # delete table users
|
33
36
|
|
37
|
+
# Row Operation
|
34
38
|
row = client.show_row('users', 'sishen') # show the data of row 'sishen' in table 'users'
|
35
|
-
|
36
39
|
row2 = client.create_row('users', 'sishen', Time.now.to_i, {:name => 'habbit:football', :value => 'i like football'}) # create the row 'sishen' with the data in the table 'users'
|
37
|
-
|
38
40
|
client.delete_row('users', 'sishen', nil, 'habbit:football') # delete the row 'sishen' of table 'users' with the optional column 'habbit:football'
|
41
|
+
|
42
|
+
# Scanner Operation
|
43
|
+
scanner = client.open_scanner('users', 'habbit:')
|
44
|
+
rows = client.get_rows(scanner)
|
45
|
+
client.close_scanner(scanner)
|
39
46
|
}}}
|
40
47
|
|
48
|
+
== Testing
|
49
|
+
|
50
|
+
First you want to install rspec gem:
|
51
|
+
|
52
|
+
{{{
|
53
|
+
sudo gem install rspec
|
54
|
+
}}}
|
55
|
+
|
56
|
+
Now, you can run the spec by following rake task:
|
57
|
+
|
58
|
+
{{{
|
59
|
+
rake examples
|
60
|
+
}}}
|
61
|
+
|
41
62
|
== Copyright
|
42
63
|
|
43
64
|
Copyright (c) 2008 Dingding Ye <yedingding@gmail.com>
|
data/Rakefile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'hoe'
|
3
3
|
|
4
|
-
Hoe.new('sishen-hbase-ruby', '0.4.
|
4
|
+
Hoe.new('sishen-hbase-ruby', '0.4.3') do |p|
|
5
5
|
p.rubyforge_name = 'sishen-hbase-ruby'
|
6
6
|
p.author = 'Ye Dingding'
|
7
7
|
p.email = 'yedingding@gmail.com'
|
@@ -9,5 +9,5 @@ Hoe.new('sishen-hbase-ruby', '0.4.2') do |p|
|
|
9
9
|
p.summary = 'a pure ruby client for hbase using REST interface'
|
10
10
|
p.description = 'hbase-ruby is a pure ruby client for hbase and enable the ruby app enjoy the power of HBase'
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
Dir['tasks/**/*.rake'].each { |rake| load rake }
|
data/hbase-ruby.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = %q{hbase-ruby}
|
3
|
-
s.version = "0.4.
|
3
|
+
s.version = "0.4.3"
|
4
4
|
|
5
5
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
6
6
|
s.authors = ["Ye Dingding"]
|
@@ -22,10 +22,13 @@ Gem::Specification.new do |s|
|
|
22
22
|
|
23
23
|
if current_version >= 3 then
|
24
24
|
s.add_development_dependency(%q<hoe>, [">= 1.7.0"])
|
25
|
+
s.add_development_dependency(%q<rspec>, [">= 1.1.4"])
|
25
26
|
else
|
26
27
|
s.add_dependency(%q<hoe>, [">= 1.7.0"])
|
28
|
+
s.add_dependency(%q<rspec>, [">= 1.1.4"])
|
27
29
|
end
|
28
30
|
else
|
29
31
|
s.add_dependency(%q<hoe>, [">= 1.7.0"])
|
32
|
+
s.add_dependency(%q<rspec>, [">= 1.1.4"])
|
30
33
|
end
|
31
34
|
end
|
@@ -8,6 +8,20 @@ module HBase
|
|
8
8
|
def initialize(path)
|
9
9
|
@path = path
|
10
10
|
end
|
11
|
+
|
12
|
+
|
13
|
+
protected
|
14
|
+
|
15
|
+
def pack_params columns
|
16
|
+
if columns.is_a? String
|
17
|
+
columns = [columns]
|
18
|
+
elsif columns.is_a? Array
|
19
|
+
else
|
20
|
+
raise StandardError, "Only String or Array type allows for columns"
|
21
|
+
end
|
22
|
+
|
23
|
+
columns.collect { |column| "column=#{column}" }.join('&')
|
24
|
+
end
|
11
25
|
end
|
12
26
|
end
|
13
27
|
end
|
@@ -5,9 +5,11 @@ module HBase
|
|
5
5
|
attr_reader :name
|
6
6
|
attr_reader :timestamp
|
7
7
|
|
8
|
-
def initialize(table_name, name, timestamp)
|
8
|
+
def initialize(table_name, name, timestamp=nil)
|
9
9
|
@table_name, @name, @timestamp = CGI.escape(table_name), CGI.escape(name), timestamp
|
10
|
-
|
10
|
+
path = "/#{@table_name}/row/#{@name}"
|
11
|
+
path << "/#{@timestamp}" if timestamp
|
12
|
+
super(path)
|
11
13
|
end
|
12
14
|
|
13
15
|
def show(columns = nil, version = nil)
|
@@ -26,13 +28,6 @@ module HBase
|
|
26
28
|
@path << "?#{pack_params(columns)}" if columns
|
27
29
|
@path
|
28
30
|
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def pack_params columns
|
33
|
-
columns = [columns] unless columns.is_a? Array
|
34
|
-
columns.collect { |column| "column=#{column}" }.join('&')
|
35
|
-
end
|
36
31
|
end
|
37
32
|
end
|
38
33
|
end
|
@@ -10,12 +10,12 @@ module HBase
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def show
|
13
|
-
|
13
|
+
@path << "/#{name}"
|
14
14
|
end
|
15
15
|
|
16
16
|
def regions(start_row = nil, end_row = nil)
|
17
17
|
#TODO no handle the args!
|
18
|
-
|
18
|
+
@path << "/#{name}/regions"
|
19
19
|
end
|
20
20
|
|
21
21
|
def create
|
@@ -23,37 +23,22 @@ module HBase
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def update
|
26
|
-
|
26
|
+
@path << "/#{name}"
|
27
27
|
end
|
28
28
|
|
29
29
|
def enable
|
30
|
-
|
30
|
+
@path << "/#{name}/enable"
|
31
31
|
end
|
32
32
|
|
33
33
|
def disable
|
34
|
-
|
34
|
+
@path << "/#{name}/disable"
|
35
35
|
end
|
36
36
|
|
37
37
|
def delete(columns = nil)
|
38
|
-
|
39
|
-
|
40
|
-
columns = [columns]
|
41
|
-
elsif columns.is_a? Array
|
42
|
-
else
|
43
|
-
raise StandardError, "Only String or Array type allows for columns"
|
44
|
-
end
|
45
|
-
params = columns.collect { |column| "column=#{column}" }.join('%')
|
46
|
-
member_path << "?#{params}"
|
47
|
-
end
|
38
|
+
@path << "/#{name}"
|
39
|
+
@path << "?#{pack_params(columns)}" if columns
|
48
40
|
@path
|
49
41
|
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
def member_path
|
54
|
-
@path << "/#{name}"
|
55
|
-
@path
|
56
|
-
end
|
57
42
|
end
|
58
43
|
end
|
59
44
|
end
|
@@ -7,7 +7,7 @@ module HBase
|
|
7
7
|
columns = []
|
8
8
|
row.elements.each("column") do |col|
|
9
9
|
name = col.elements["name"].text.strip.unpack("m").first
|
10
|
-
value = col.elements["value"].text.strip.unpack("m").first
|
10
|
+
value = col.elements["value"].text.strip.unpack("m").first rescue nil
|
11
11
|
timestamp = col.elements["timestamp"].text.strip.to_i
|
12
12
|
columns << Model::Column.new(:name => name,
|
13
13
|
:value => value,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sishen-hbase-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ye Dingding
|
@@ -21,6 +21,15 @@ dependencies:
|
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 1.7.0
|
23
23
|
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: rspec
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 1.1.4
|
32
|
+
version:
|
24
33
|
description: hbase-ruby is a pure ruby client for hbase and enable the ruby app enjoy the power of HBase
|
25
34
|
email: yedingding@gmail.com
|
26
35
|
executables: []
|