hbase-jruby 0.2.6-java → 0.3.0-java

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/hbase-jruby.gemspec CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |gem|
14
14
  gem.platform = 'java'
15
15
  gem.license = 'MIT'
16
16
 
17
- gem.files = `git ls-files`.split($/)
17
+ gem.files = `git ls-files`.split($/).reject { |f| f =~ /^benchmark/ }
18
18
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
19
19
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
20
  gem.require_paths = ["lib"]
@@ -2,6 +2,7 @@ class HBase
2
2
  class << self
3
3
  # Shortcut method to HBase::ByteArray.new
4
4
  # @param [*Object] values
5
+ # @return [HBase::ByteArray]
5
6
  def ByteArray *values
6
7
  ByteArray.new(*values)
7
8
  end
@@ -16,6 +17,13 @@ class ByteArray
16
17
 
17
18
  include Enumerable
18
19
 
20
+ # Shortcut method to HBase::ByteArray.new
21
+ # @param [*Object] values
22
+ # @return [HBase::ByteArray]
23
+ def self.[] *values
24
+ ByteArray.new(*values)
25
+ end
26
+
19
27
  # Initializes ByteArray instance with the given objects,
20
28
  # each converted to its byte array representation
21
29
  # @param [*Object] values
@@ -30,16 +38,14 @@ class ByteArray
30
38
  end
31
39
 
32
40
  def each
33
- if block_given?
34
- @java.to_a.each { |byte| yield byte }
35
- else
36
- self
37
- end
41
+ return enum_for(:each) unless block_given?
42
+ @java.to_a.each { |byte| yield byte }
38
43
  end
39
44
 
40
45
  # Checks if the two byte arrays are the same
41
46
  # @param [HBase::ByteArray] other
42
47
  def eql? other
48
+ other = other_as_byte_array other
43
49
  Arrays.equals(@java, other.java)
44
50
  end
45
51
  alias == eql?
@@ -47,6 +53,7 @@ class ByteArray
47
53
  # Compares two ByteArray objects
48
54
  # @param [HBase::ByteArray] other
49
55
  def <=> other
56
+ other = other_as_byte_array other
50
57
  Bytes.compareTo(@java, other.java)
51
58
  end
52
59
 
@@ -147,12 +154,25 @@ class ByteArray
147
154
  Arrays.java_send(:hashCode, [Util::JAVA_BYTE_ARRAY_CLASS], @java)
148
155
  end
149
156
 
157
+ def inspect
158
+ "HBase::ByteArray<#{@java.to_a.join ', '}>"
159
+ end
160
+
150
161
  private
151
162
  def initialize_ *values
152
163
  @java = values.inject(Util::JAVA_BYTE_ARRAY_EMPTY) { |sum, value|
153
164
  Bytes.add sum, Util.to_bytes(value)
154
165
  }
155
166
  end
167
+
168
+ def other_as_byte_array other
169
+ case other
170
+ when ByteArray
171
+ other
172
+ else
173
+ ByteArray[other]
174
+ end
175
+ end
156
176
  end#ByteArray
157
177
  end#HBase
158
178
 
@@ -7,7 +7,8 @@ class Cell
7
7
 
8
8
  # Creates a boxed object for a KeyValue object
9
9
  # @param [org.apache.hadoop.hbase.KeyValue] key_value
10
- def initialize key_value
10
+ def initialize table, key_value
11
+ @table = table
11
12
  @java = key_value
12
13
  @ck = nil
13
14
  end
@@ -16,16 +17,10 @@ class Cell
16
17
  # @param [Symbol] type The type of the rowkey.
17
18
  # Can be one of :string, :symbol, :fixnum, :float, :short, :int, :bigdecimal, :boolean and :raw.
18
19
  # @return [String, byte[]]
19
- def rowkey type = :string
20
+ def rowkey type = :raw
20
21
  Util.from_bytes type, @java.getRow
21
22
  end
22
23
 
23
- # Returns the ColumnKey object for the cell
24
- # @return [ColumnKey]
25
- def column_key
26
- @ck ||= ColumnKey.new @java.getFamily, @java.getQualifier
27
- end
28
-
29
24
  # Returns the name of the column family of the cell
30
25
  # @return [String]
31
26
  def family
@@ -49,12 +44,17 @@ class Cell
49
44
  end
50
45
  alias ts timestamp
51
46
 
47
+ # Returns the value of the cell. If the column in not defined in the schema, returns Java byte array.
48
+ def value
49
+ _, _, type = @table.lookup_schema(cq)
50
+ Util.from_bytes(type, raw)
51
+ end
52
+
52
53
  # Returns the value of the cell as a Java byte array
53
54
  # @return [byte[]]
54
- def value
55
+ def raw
55
56
  @java.getValue
56
57
  end
57
- alias raw value
58
58
 
59
59
  # Returns the column value as a String
60
60
  # @return [String]
@@ -122,6 +122,17 @@ class Cell
122
122
  KeyValue.COMPARATOR.compare(@java, other.java)
123
123
  end
124
124
 
125
+ # Checks if the cells are the same
126
+ # @param [HBase::Cell] other
127
+ def eql? other
128
+ (self <=> other) == 0
129
+ end
130
+ alias == eql?
131
+
132
+ def hash
133
+ @java.hasCode
134
+ end
135
+
125
136
  # Returns a printable version of this cell
126
137
  # @return [String]
127
138
  def inspect
@@ -16,7 +16,7 @@ class HBase
16
16
  'cdh4.1' => 'cdh4.1.4',
17
17
  'cdh3' => 'cdh3u6',
18
18
  '0.95' => '0.95.0',
19
- '0.94' => '0.94.6.1',
19
+ '0.94' => '0.94.7',
20
20
  '0.92' => '0.92.2',
21
21
  }
22
22
 
@@ -154,10 +154,6 @@ class HBase
154
154
  HBase::Result => %w[
155
155
  org.apache.hadoop.hbase.util.Bytes
156
156
  ],
157
- HBase::ColumnKey => %w[
158
- java.util.Arrays
159
- org.apache.hadoop.hbase.util.Bytes
160
- ],
161
157
  HBase::Table => %w[
162
158
  org.apache.hadoop.hbase.HColumnDescriptor
163
159
  org.apache.hadoop.hbase.HTableDescriptor
@@ -4,7 +4,7 @@ require 'java'
4
4
  # @!attribute [r] config
5
5
  # @return [org.apache.hadoop.conf.Configuration]
6
6
  class HBase
7
- attr_reader :config
7
+ attr_reader :config, :schema
8
8
 
9
9
  include Admin
10
10
 
@@ -61,6 +61,7 @@ class HBase
61
61
  end
62
62
  end
63
63
  @htable_pool = HTablePool.new @config, java.lang.Integer::MAX_VALUE
64
+ @schema = Schema.new
64
65
  @closed = false
65
66
  end
66
67
 
@@ -138,6 +139,20 @@ class HBase
138
139
  }
139
140
  end
140
141
 
142
+ # @param [Hash] hash
143
+ # @return [HBase::Schema]
144
+ def schema= hash
145
+ unless hash.is_a?(Hash)
146
+ raise ArgumentError, "invalid schema: Hash required"
147
+ end
148
+
149
+ schema = Schema.new
150
+ hash.each do |table, definition|
151
+ schema[table] = definition
152
+ end
153
+ @schema = schema
154
+ end
155
+
141
156
  private
142
157
  def check_closed
143
158
  raise RuntimeError, "Connection already closed" if closed?