forward-rbase 0.1.0 → 0.2.0
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/rbase/client.rb +4 -0
- data/lib/rbase/table.rb +38 -9
- data/lib/rbase/thrift/hbase.rb +2 -4
- metadata +3 -3
data/lib/rbase/client.rb
CHANGED
@@ -16,6 +16,10 @@ module Rbase
|
|
16
16
|
client.getTableNames
|
17
17
|
end
|
18
18
|
|
19
|
+
def table_exists?(table_name)
|
20
|
+
table_names.include?(table_name)
|
21
|
+
end
|
22
|
+
|
19
23
|
def create_table(table_name, *column_family_names)
|
20
24
|
column_families = column_family_names.map do |family_name|
|
21
25
|
Apache::Hadoop::Hbase::Thrift::ColumnDescriptor.new(:name => family_name)
|
data/lib/rbase/table.rb
CHANGED
@@ -6,16 +6,13 @@ module Rbase
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def find(row)
|
9
|
-
@client.getRow(@table_name,row).map
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
ret_val[family][key] = val.value
|
15
|
-
end
|
16
|
-
ret_val
|
17
|
-
end
|
9
|
+
@client.getRow(@table_name,row).map { |row| row_to_hash(row) }
|
10
|
+
end
|
11
|
+
|
12
|
+
def first(row)
|
13
|
+
find(row).first
|
18
14
|
end
|
15
|
+
alias_method :[], :first
|
19
16
|
|
20
17
|
def insert(row, hash)
|
21
18
|
hash.each do |family,value|
|
@@ -25,5 +22,37 @@ module Rbase
|
|
25
22
|
@client.mutateRow(@table_name,row,mutations)
|
26
23
|
end
|
27
24
|
end
|
25
|
+
alias_method :[]=, :insert
|
26
|
+
|
27
|
+
def each_batch(batch_size=100, columns=[])
|
28
|
+
columns = [columns] unless columns.is_a?(Array)
|
29
|
+
scanner_id = @client.scannerOpen(@table_name, '', columns)
|
30
|
+
loop do
|
31
|
+
results = @client.scannerGetList(scanner_id, batch_size)
|
32
|
+
break if results.length == 0
|
33
|
+
yield results.map {|r| row_to_hash(r) }
|
34
|
+
end
|
35
|
+
@client.scannerClose(scanner_id)
|
36
|
+
end
|
37
|
+
|
38
|
+
def each(batch_size=100, columns=[])
|
39
|
+
each_batch(batch_size, columns) do |results|
|
40
|
+
results.each do |result|
|
41
|
+
yield(result)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def row_to_hash(row)
|
49
|
+
ret_val = {}
|
50
|
+
row.columns.each do |column,val|
|
51
|
+
family, key = *column.split(":")
|
52
|
+
ret_val[family] ||= {}
|
53
|
+
ret_val[family][key] = val.value
|
54
|
+
end
|
55
|
+
ret_val
|
56
|
+
end
|
28
57
|
end
|
29
58
|
end
|
data/lib/rbase/thrift/hbase.rb
CHANGED
@@ -2043,9 +2043,8 @@ require File.join(File.dirname(__FILE__), 'hbase_types')
|
|
2043
2043
|
IO => {:type => ::Thrift::Types::STRUCT, :name => 'io', :class => Apache::Hadoop::Hbase::Thrift::IOError}
|
2044
2044
|
}
|
2045
2045
|
|
2046
|
-
def struct_fields; FIELDS;
|
2046
|
+
def struct_fields; FIELDS; end
|
2047
2047
|
|
2048
|
-
|
2049
2048
|
def validate
|
2050
2049
|
end
|
2051
2050
|
|
@@ -2308,5 +2307,4 @@ require File.join(File.dirname(__FILE__), 'hbase_types')
|
|
2308
2307
|
end
|
2309
2308
|
end
|
2310
2309
|
end
|
2311
|
-
end
|
2312
|
-
end
|
2310
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: forward-rbase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Forward Internet Group
|