hbase-jruby 0.6.4-java → 0.7.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f36f9ad6226b500c087ad5a8ffc9f294c738752e
4
- data.tar.gz: 23ac26035d0054188538e115d899c191dd803776
3
+ metadata.gz: 0714705c9427de687d1657774b34d8126ef10dbd
4
+ data.tar.gz: 768ac4c28e4709151a665290402f2a3fe573aefb
5
5
  SHA512:
6
- metadata.gz: cb25e98c711400af4e3eda1f91efbc0ca2a145f0c213384ea7da2bb45d4b98f6511381dee30c0a606faf9c1f10948aff5996d6c447cfc0acb41d98d71cd9349c
7
- data.tar.gz: 58a59bf73bf759718bd58063af461cee14ece10de17cd40634b81dbf26a6406fa3d8dc608a842fde314bb42a74a537c9965e3073edb368e12f34b6961e1445dc
6
+ metadata.gz: 2102cbfca64c12be4addf08d0c6526549fe7f25923c079b89510d0a3404d1e64245d9feac24299c9ae10ff8533f2e8aaedf08d4859af5158fcea815a34e7ba14
7
+ data.tar.gz: dfb7325181769b6e57319c072d874f2b01dce456edaad2c7d33590eda98963b9b05a5540d7856b0df85253a900d39fe4829d047bde990ca18346b810a6d92858
data/CHANGELOG.md CHANGED
@@ -1,6 +1,24 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ 0.7.0
5
+ -----
6
+
7
+ - Distinguish float and double
8
+ - `Cell#float` / `Cell#double`
9
+ - `Row#float` / `Row#double`
10
+ - `Row#floats` / `Row#doubles`
11
+ - `Util.to_bytes 3.14` (double by default)
12
+ - `Util.to_bytes :float => 3.14`
13
+ - `Util.to_bytes :double => 3.14`
14
+ - `Util.from_bytes :float, bytes'`
15
+ - Removed automatic disable/enable to support online alter
16
+ - Fixed `HBase::Table#alter_family[!]` not to drop previous non-default
17
+ settings
18
+ - Performance improvement with column key interpretation cache
19
+ - Dependency resolution is now deprecated
20
+ - HBase 1.0 client compatibility
21
+
4
22
  0.6.4
5
23
  -----
6
24
 
data/README.md CHANGED
@@ -5,7 +5,6 @@
5
5
  *hbase-jruby* provides the followings:
6
6
  - Easy, Ruby-esque interface for the fundamental HBase operations
7
7
  - ActiveRecord-like method chaining for data retrieval
8
- - Automatic Hadoop/HBase dependency resolution
9
8
 
10
9
  ## Installation
11
10
 
@@ -18,14 +17,13 @@ You can use this gem in HBase shell without external JRuby installation.
18
17
  First, clone this repository,
19
18
 
20
19
  ```sh
21
- git clone https://github.com/junegunn/hbase-jruby.git
20
+ git clone --depth 1 https://github.com/junegunn/hbase-jruby.git
22
21
  ```
23
22
 
24
- then start up the shell (`hbase shell`) and type in the following lines:
23
+ then start up the shell (`hbase shell`) and type in the following line:
25
24
 
26
25
  ```ruby
27
- $LOAD_PATH << 'hbase-jruby/lib'
28
- require 'hbase-jruby'
26
+ $LOAD_PATH << 'hbase-jruby/lib'; require 'hbase-jruby'
29
27
  ```
30
28
 
31
29
  Now, you're all set.
@@ -46,8 +44,48 @@ hbase[:my_table].get(100).double('f:c') # Returns 3.14
46
44
  ```ruby
47
45
  require 'hbase-jruby'
48
46
 
49
- # Load required JAR files from CDH distribution using Maven
50
- HBase.resolve_dependency! 'cdh5.2.0'
47
+ # HBase client dependencies
48
+ $CLASSPATH << 'hbase-client-dep-1.0.jar'
49
+
50
+ # Connect to HBase
51
+ hbase = HBase.new 'localhost'
52
+
53
+ # Table object
54
+ table = hbase[:test_table]
55
+ table.drop! if table.exists?
56
+ table.create! :cf1, :cf2
57
+
58
+ # PUT
59
+ table.put 'rowkey1' => { 'cf1:a' => 100, 'cf2:b' => 'Hello' },
60
+ 'rowkey2' => { 'cf1:a' => 200, 'cf2:b' => 'world' }
61
+
62
+ # GET
63
+ row = table.get('rowkey1')
64
+ number = row.fixnum('cf1:a')
65
+ string = row.string('cf1:b')
66
+
67
+ # SCAN
68
+ table.range('rowkey1'..'rowkey9')
69
+ .filter('cf1:a' => 100..200, # cf1:a between 100 and 200
70
+ 'cf1:b' => 'Hello', # cf1:b = 'Hello'
71
+ 'cf2:c' => /world/i, # cf2:c matches /world/i
72
+ 'cf2:d' => ['foo', /^BAR/i]) # cf2:d = 'foo' OR matches /^BAR/i
73
+ .project('cf1:a', 'cf2').
74
+ .each do |row|
75
+ puts row.fixnum('cf1:a')
76
+ end
77
+
78
+ # DELETE
79
+ table.delete('rowkey9')
80
+ ```
81
+
82
+ ## A quick example using schema definition
83
+
84
+ ```ruby
85
+ require 'hbase-jruby'
86
+
87
+ # HBase client dependencies
88
+ $CLASSPATH << 'hbase-client-dep-1.0.jar'
51
89
 
52
90
  # Connect to HBase on localhost
53
91
  hbase = HBase.new
@@ -64,7 +102,8 @@ hbase.schema = {
64
102
  year: :short, # Short integer (2-byte)
65
103
  pages: :int, # Integer (4-byte)
66
104
  price: :bigdecimal, # BigDecimal
67
- weight: :float, # Double-precision floating-point number
105
+ height: :float, # Single-precision floating-point number (4-byte)
106
+ weight: :double, # Double-precision floating-point number (8-byte)
68
107
  in_print: :boolean, # Boolean (true | false)
69
108
  image: :raw # Java byte array; no automatic type conversion
70
109
  thumbnail: :byte_array # HBase::ByteArray
@@ -72,7 +111,7 @@ hbase.schema = {
72
111
  # Columns in cf2 family
73
112
  cf2: {
74
113
  summary: :string,
75
- reviews: :fixnum, # Long integer (8-byte)
114
+ reviews: :fixnum, # Long integer (8-byte)
76
115
  stars: :fixnum,
77
116
  /^comment\d+/ => :string
78
117
  }
@@ -144,73 +183,25 @@ table.delete 1
144
183
  ### Resolving Hadoop/HBase dependency
145
184
 
146
185
  To be able to access HBase from JRuby, Hadoop/HBase dependency must be
147
- satisfied. This can be done by either setting up CLASSPATH variable beforehand
148
- or by `require`ing relevant JAR files after launching JRuby.
186
+ satisfied. This can be done either by setting up CLASSPATH beforehand (e.g.
187
+ `CLASSPATH=$(hbase classpath) jruby ...`) or by `require`ing relevant JAR
188
+ files after launching JRuby.
149
189
 
150
- You might be able to find the right uberjar required for using HBase client
151
- API from [hbase-client-dep releases page](https://github.com/junegunn/hbase-client-dep/releases).
152
- (If you don't find one, send me a pull request.)
190
+ You might want to check out pre-built uberjars for various versions of HBase
191
+ client in [hbase-client-dep releases page][client].
153
192
 
154
193
  ```ruby
155
194
  require 'hbase-jruby'
156
- require 'hbase-client-dep-cdh5.2.jar'
195
+ $CLASSPATH << 'hbase-client-dep-1.0.jar'
157
196
 
158
- HBase.log4j = { 'log4j.threshold' => 'ERROR' }
159
197
  hbase = HBase.new
160
198
  ```
161
199
 
162
- ### `HBase.resolve_dependency!` (*to be deprecated!*)
163
-
164
- hbase-jruby is shipped with `HBase.resolve_dependency!` helper method that can
165
- be used to load JAR files from Maven repository.
166
-
167
- | Argument | Dependency | Default version | Required executable |
168
- | ---------- | ------------------------ | --------------- | ------------------- |
169
- | cdh5.2[.*] | Cloudera CDH5.2 | cdh5.2.1 | mvn |
170
- | cdh5.1[.*] | Cloudera CDH5.1 | cdh5.1.4 | mvn |
171
- | cdh5.0[.*] | Cloudera CDH5.0 | cdh5.0.5 | mvn |
172
- | cdh4.5[.*] | Cloudera CDH4.5 | cdh4.5.0 | mvn |
173
- | cdh4.4[.*] | Cloudera CDH4.4 | cdh4.4.0 | mvn |
174
- | cdh4.3[.*] | Cloudera CDH4.3 | cdh4.3.2 | mvn |
175
- | cdh4.2[.*] | Cloudera CDH4.2 | cdh4.2.2 | mvn |
176
- | cdh4.1[.*] | Cloudera CDH4.1 | cdh4.1.5 | mvn |
177
- | cdh3[u*] | Cloudera CDH3 | cdh3u6 | mvn |
178
- | 0.98[.*] | Apache HBase 0.98 | 0.98.0-hadoop2 | mvn |
179
- | 0.96[.*] | Apache HBase 0.96 | 0.96.2-hadoop2 | mvn |
180
- | 0.94[.*] | Apache HBase 0.94 | 0.94.18 | mvn |
181
- | 0.92[.*] | Apache HBase 0.92 | 0.92.2 | mvn |
182
- | *POM PATH* | Custom Maven POM file | - | mvn |
183
- | `:local` | Local HBase installation | - | hbase |
184
-
185
- (Default version is used when an argument prefix is given without specific patch version.
186
- e.g. `cdh4.2` defaults to `cdh4.2.2`)
187
-
188
- #### Examples
189
-
190
- ```ruby
191
- # Load JAR files from CDH4 using Maven
192
- HBase.resolve_dependency! 'cdh4.3.0'
193
- HBase.resolve_dependency! 'cdh4.2'
194
-
195
- # Load JAR files of HBase 0.94.x using Maven
196
- HBase.resolve_dependency! '0.94.7'
197
- HBase.resolve_dependency! '0.94.2', verbose: true
198
-
199
- # Dependency resolution with custom POM file
200
- HBase.resolve_dependency! '/path/to/my/pom.xml'
201
- HBase.resolve_dependency! '/path/to/my/pom.xml', profile: 'trunk'
202
-
203
- # Load JAR files from local HBase installation
204
- # (equivalent to: export CLASSPATH=$CLASSPATH:`hbase classpath`)
205
- HBase.resolve_dependency! :local
206
- ```
207
-
208
- (If you're behind an http proxy, set up your ~/.m2/settings.xml file
209
- as described in [this page](http://maven.apache.org/guides/mini/guide-proxies.html))
200
+ [client]: https://github.com/junegunn/hbase-client-dep/releases
210
201
 
211
202
  ### Log4j logs from HBase
212
203
 
213
- You may want to suppress (or customize) log messages from HBase.
204
+ You can suppress (or customize) log messages from HBase.
214
205
 
215
206
  ```ruby
216
207
  # With an external log4j.properties or log4j.xml file
@@ -228,6 +219,9 @@ HBase.log4j = { 'log4j.threshold' => 'ERROR' }
228
219
  hbase = HBase.new
229
220
 
230
221
  # HBase on remote host
222
+ hbase = HBase.new 'remote-server.mydomain.net'
223
+
224
+ # The above is equivalent to the following:
231
225
  hbase = HBase.new 'hbase.zookeeper.quorum' => 'remote-server.mydomain.net'
232
226
 
233
227
  # Extra configuration
@@ -303,7 +297,7 @@ hbase.schema = {
303
297
  year: :short, # Short integer (2-byte)
304
298
  pages: :int, # Integer (4-byte)
305
299
  price: :bigdecimal, # BigDecimal
306
- weight: :float, # Double-precision floating-point number
300
+ weight: :double, # Double-precision floating-point number
307
301
  in_print: :boolean, # Boolean (true | false)
308
302
  image: :raw # Java byte array; no automatic type conversion
309
303
  },
@@ -958,10 +952,12 @@ hbase[:dupe_table].create!(
958
952
 
959
953
  ## Table administration
960
954
 
961
- `HBase#Table` provides a number of *bang_methods!* for table administration tasks.
962
- They run synchronously, except when mentioned otherwise (e.g. `HTable#split!`).
963
- Some of them take an optional block to allow progress monitoring
964
- and come with non-bang, asynchronous counterparts.
955
+ `HBase#Table` provides a number of *bang_methods!* for table administration
956
+ tasks. They run synchronously, except when mentioned otherwise (e.g.
957
+ `HTable#split!`). Some of them take an optional block to allow progress
958
+ monitoring and come with non-bang, asynchronous counterparts. If you're
959
+ running an old version of HBase cluster, you'll have to `disable!` the table
960
+ before altering it.
965
961
 
966
962
  ### Creation and alteration
967
963
 
@@ -1218,7 +1214,7 @@ first = ba[0, 8]
1218
1214
  second = ba[8...16]
1219
1215
 
1220
1216
  first.decode(:fixnum) # 100
1221
- second.decode(:float) # 3.14
1217
+ second.decode(:double) # 3.14
1222
1218
  ```
1223
1219
 
1224
1220
  append, prepend more elements to it,
@@ -1240,7 +1236,7 @@ or shift decoded objects from it.
1240
1236
  ba.shift(:fixnum)
1241
1237
  ba.shift(:boolean)
1242
1238
  ba.shift(:fixnum)
1243
- ba.shift(:float)
1239
+ ba.shift(:double)
1244
1240
  ba.shift(:int)
1245
1241
  ba.shift(:string, 11) # Byte length must be given as Strings are not fixed in size
1246
1242
  ```
data/hbase-jruby.gemspec CHANGED
@@ -19,6 +19,6 @@ Gem::Specification.new do |gem|
19
19
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
20
  gem.require_paths = ["lib"]
21
21
 
22
- gem.add_development_dependency 'test-unit'
22
+ gem.add_development_dependency 'yard'
23
23
  gem.add_development_dependency 'simplecov'
24
24
  end
@@ -101,12 +101,17 @@ class Cell
101
101
  Util.from_bytes :bigdecimal, value
102
102
  end
103
103
 
104
- # Returns the column value as a Float
104
+ # Returns the 4-byte column value as a Float
105
105
  # @return [Float]
106
106
  def float
107
107
  Util.from_bytes :float, value
108
108
  end
109
- alias double float
109
+
110
+ # Returns the 8-byte column value as a Float
111
+ # @return [Float]
112
+ def double
113
+ Util.from_bytes :double, value
114
+ end
110
115
 
111
116
  # Returns the column value as a boolean value
112
117
  # @return [true, false]
@@ -5,213 +5,96 @@ require 'erb'
5
5
 
6
6
  # HBase connection
7
7
  class HBase
8
+ # @private
9
+ @mutex = Mutex.new
8
10
 
9
11
  # @private
10
- # https://github.com/apache/hbase/tags
11
- # http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.apache.hbase%22%20AND%20a%3A%22hbase%22
12
- # https://ccp.cloudera.com/display/SUPPORT/CDH+Downloads
13
- SUPPORTED_PROFILES = {
14
- # Prefix => Latest known version
15
- 'cdh5.2' => 'cdh5.2.1',
16
- 'cdh5.1' => 'cdh5.1.4',
17
- 'cdh5.0' => 'cdh5.0.5',
18
- 'cdh4.6' => 'cdh4.6.0',
19
- 'cdh4.5' => 'cdh4.5.0',
20
- 'cdh4.4' => 'cdh4.4.0',
21
- 'cdh4.3' => 'cdh4.3.2',
22
- 'cdh4.2' => 'cdh4.2.2',
23
- 'cdh4.1' => 'cdh4.1.5',
24
- 'cdh3' => 'cdh3u6',
25
- '0.98' => '0.98.0-hadoop2',
26
- '0.96' => '0.96.2-hadoop2',
27
- '0.95' => '0.95.2-hadoop2',
28
- '0.94' => '0.94.18',
29
- '0.92' => '0.92.2',
12
+ @deps = {
13
+ self => %w[
14
+ org.apache.hadoop.hbase.HBaseConfiguration
15
+ org.apache.hadoop.hbase.client.HBaseAdmin
16
+ org.apache.hadoop.hbase.client.HConnectionManager
17
+ org.apache.hadoop.hbase.client.HTablePool
18
+ ],
19
+ Util => %w[
20
+ java.nio.ByteBuffer
21
+ org.apache.hadoop.hbase.KeyValue
22
+ org.apache.hadoop.hbase.util.Bytes
23
+ ],
24
+ ByteArray => %w[
25
+ java.util.Arrays
26
+ org.apache.hadoop.hbase.util.Bytes
27
+ ],
28
+ Cell => %w[
29
+ org.apache.hadoop.hbase.KeyValue
30
+ ],
31
+ Result => %w[
32
+ org.apache.hadoop.hbase.util.Bytes
33
+ ],
34
+ Table => %w[
35
+ org.apache.hadoop.hbase.HColumnDescriptor
36
+ org.apache.hadoop.hbase.HTableDescriptor
37
+ org.apache.hadoop.hbase.client.Append
38
+ org.apache.hadoop.hbase.client.Delete
39
+ org.apache.hadoop.hbase.client.Increment
40
+ org.apache.hadoop.hbase.client.Put
41
+ org.apache.hadoop.hbase.client.RowMutations
42
+ ] << %w[org.apache.hadoop.hbase.io.hfile.Compression
43
+ org.apache.hadoop.hbase.io.compress.Compression],
44
+ Scoped => %w[
45
+ org.apache.hadoop.hbase.client.Get
46
+ org.apache.hadoop.hbase.client.Scan
47
+ org.apache.hadoop.hbase.filter.BinaryComparator
48
+ org.apache.hadoop.hbase.filter.ColumnPaginationFilter
49
+ org.apache.hadoop.hbase.filter.ColumnRangeFilter
50
+ org.apache.hadoop.hbase.filter.CompareFilter
51
+ org.apache.hadoop.hbase.filter.FilterBase
52
+ org.apache.hadoop.hbase.filter.FilterList
53
+ org.apache.hadoop.hbase.filter.KeyOnlyFilter
54
+ org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter
55
+ org.apache.hadoop.hbase.filter.MultipleColumnPrefixFilter
56
+ org.apache.hadoop.hbase.filter.PrefixFilter
57
+ org.apache.hadoop.hbase.filter.RegexStringComparator
58
+ org.apache.hadoop.hbase.filter.RowFilter
59
+ org.apache.hadoop.hbase.filter.SingleColumnValueFilter
60
+ org.apache.hadoop.hbase.filter.WhileMatchFilter
61
+ org.apache.hadoop.hbase.client.coprocessor.AggregationClient
62
+ org.apache.hadoop.hbase.client.coprocessor.LongColumnInterpreter
63
+ ]
30
64
  }
31
65
 
32
66
  class << self
33
- # @overload resolve_dependency!(dist, options)
34
- # Resolve Hadoop and HBase dependency with a predefined Maven profile
35
- # @param [String] dist HBase distribution: cdh4.[1-5], cdh3, 0.94, 0.92, local
36
- # @param [Hash] options Options
37
- # @option options [Boolean] :verbose Enable verbose output
38
- # @return [Array<String>] Loaded JAR files
39
- # @overload resolve_dependency!(pom_path, options)
40
- # Resolve Hadoop and HBase dependency with the given Maven POM file
41
- # @param [String] pom_path Path to POM file
42
- # @param [Hash] options Options
43
- # @option options [Boolean] :verbose Enable verbose output
44
- # @option options [String] :profile Maven profile
45
- # @return [Array<String>] Loaded JAR files
46
- def resolve_dependency! dist, options = {}
47
- # Backward-compatibility
48
- options = { :verbose => options } if [true, false].include?(options)
49
- options = { :verbose => false }.merge(options)
50
-
51
- dist = dist.to_s
52
- verbose = options[:verbose]
53
-
54
- silencer = verbose ? '' : '> /dev/null'
55
- tempfiles = []
56
-
57
- jars =
58
- if %w[hbase local].include?(dist)
59
- # Check for hbase executable
60
- hbase = `which hbase`
61
- raise RuntimeError, "Cannot find `hbase` executable" if hbase.empty?
62
- `hbase classpath`.strip.split(':').map { |e| Dir[e] }.flatten
63
- else
64
- # Check for Maven executable
65
- mvn = `which mvn`
66
- raise RuntimeError, "Cannot find `mvn` executable" if mvn.empty?
67
-
68
- # POM file path given (with optional profile)
69
- if File.exists?(dist)
70
- path = dist
71
- profile = options[:profile] && "-P #{options[:profile]}"
72
- # Predefined dependencies
73
- else
74
- matched_profiles = SUPPORTED_PROFILES.keys.select { |pf| dist.start_with? pf }
75
- if matched_profiles.length != 1
76
- raise ArgumentError, "Unknown profile: #{dist}"
77
- end
78
- matched_profile = matched_profiles.first
79
- profiles = SUPPORTED_PROFILES.dup
80
- profiles[matched_profile] = dist if dist != matched_profile
81
- tempfiles << tf = Tempfile.new('hbase-jruby-pom')
82
- erb = ERB.new(File.read File.expand_path("../pom/pom.xml.erb", __FILE__))
83
- tf << erb.result(binding)
84
- tf.close(false)
85
- path = tf.path
86
- profile = "-P #{matched_profile}"
87
- end
88
-
89
- # Download dependent JAR files and build classpath string
90
- tempfiles << tf = Tempfile.new('hbase-jruby-classpath')
91
- tf.close(false)
92
- system("mvn org.apache.maven.plugins:maven-dependency-plugin:2.5.1:resolve " <<
93
- "org.apache.maven.plugins:maven-dependency-plugin:2.5.1:build-classpath " <<
94
- "-Dsilent=true -Dmdep.outputFile=#{tf.path} #{profile} -f #{path} #{silencer}")
95
-
96
- unless $?.exitstatus == 0
97
- message = "Error occurred."
98
- message << " Set verbose option to see the log." unless verbose
99
- raise RuntimeError.new(message)
100
- end
101
-
102
- if File.read(tf.path).empty?
103
- desc =
104
- if options[:profile]
105
- "#{dist} (#{options[:profile]})"
106
- else
107
- dist
108
- end
109
- raise ArgumentError.new("Invalid profile: #{desc}")
110
- end
111
- File.read(tf.path).split(':')
112
- end
113
-
114
- # Load jars
115
- jars_loaded = jars.select { |jar|
116
- File.file?(jar) &&
117
- File.extname(jar).downcase == '.jar' &&
118
- require(jar)
119
- }
120
-
121
- # Apply pending log4j configuration
122
- HBase.log4j = @@log4j if @@log4j
123
-
124
- # Try importing Java classes again
125
- not_found = HBase.import_java_classes!
126
- if verbose && !not_found.empty?
127
- warn "Java classes not found: #{not_found.join(', ')}"
128
- end
129
-
130
- return jars_loaded
131
- ensure
132
- tempfiles.each { |tempfile| tempfile.unlink rescue nil }
67
+ # Returns the version of the loaded client library
68
+ # @return [String]
69
+ def version
70
+ org.apache.hadoop.hbase.util.VersionInfo.getVersion
133
71
  end
134
72
 
135
- # Import Java classes (Prerequisite for classes in hbase-jruby)
136
- # @return [Array<String>] List of Java classes *NOT* found
73
+ # @private
137
74
  def import_java_classes!
138
- imp = lambda { |hash|
139
- hash.map { |base, classes|
75
+ @mutex.synchronize do
76
+ @deps.each do |base, list|
140
77
  base.class_eval do
141
- classes.map { |klass|
142
- begin
143
- java_import klass
144
- nil
145
- rescue NameError => e
146
- klass
78
+ list.reject! do |classes|
79
+ [*classes].find do |klass|
80
+ begin
81
+ java_import klass
82
+ true
83
+ rescue NameError
84
+ false
85
+ end
147
86
  end
148
- }.compact
149
- end
150
- }.flatten
151
- }
152
-
153
- imp.call(
154
- HBase => %w[
155
- org.apache.hadoop.hbase.HBaseConfiguration
156
- org.apache.hadoop.hbase.client.HBaseAdmin
157
- org.apache.hadoop.hbase.client.HConnectionManager
158
- org.apache.hadoop.hbase.client.HTablePool
159
- ],
160
- HBase::Util => %w[
161
- java.nio.ByteBuffer
162
- org.apache.hadoop.hbase.KeyValue
163
- org.apache.hadoop.hbase.util.Bytes
164
- ],
165
- HBase::ByteArray => %w[
166
- java.util.Arrays
167
- org.apache.hadoop.hbase.util.Bytes
168
- ],
169
- HBase::Cell => %w[
170
- org.apache.hadoop.hbase.KeyValue
171
- ],
172
- HBase::Result => %w[
173
- org.apache.hadoop.hbase.util.Bytes
174
- ],
175
- HBase::Table => %w[
176
- org.apache.hadoop.hbase.HColumnDescriptor
177
- org.apache.hadoop.hbase.HTableDescriptor
178
- org.apache.hadoop.hbase.client.Append
179
- org.apache.hadoop.hbase.client.Delete
180
- org.apache.hadoop.hbase.client.Increment
181
- org.apache.hadoop.hbase.client.Put
182
- org.apache.hadoop.hbase.client.RowMutations
183
- org.apache.hadoop.hbase.io.hfile.Compression
184
- org.apache.hadoop.hbase.io.compress.Compression
185
- ], # hfile.Compression <= 0.94
186
- HBase::Scoped => %w[
187
- org.apache.hadoop.hbase.client.Get
188
- org.apache.hadoop.hbase.client.Scan
189
- org.apache.hadoop.hbase.filter.BinaryComparator
190
- org.apache.hadoop.hbase.filter.ColumnPaginationFilter
191
- org.apache.hadoop.hbase.filter.ColumnRangeFilter
192
- org.apache.hadoop.hbase.filter.CompareFilter
193
- org.apache.hadoop.hbase.filter.FilterBase
194
- org.apache.hadoop.hbase.filter.FilterList
195
- org.apache.hadoop.hbase.filter.KeyOnlyFilter
196
- org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter
197
- org.apache.hadoop.hbase.filter.MultipleColumnPrefixFilter
198
- org.apache.hadoop.hbase.filter.PrefixFilter
199
- org.apache.hadoop.hbase.filter.RegexStringComparator
200
- org.apache.hadoop.hbase.filter.RowFilter
201
- org.apache.hadoop.hbase.filter.SingleColumnValueFilter
202
- org.apache.hadoop.hbase.filter.WhileMatchFilter
203
- org.apache.hadoop.hbase.client.coprocessor.AggregationClient
204
- org.apache.hadoop.hbase.client.coprocessor.LongColumnInterpreter
205
- ]).tap { |not_found|
206
-
207
- if not_found.empty?
208
- self.instance_eval do
209
- def import_java_classes!
210
- []
211
87
  end
212
88
  end
213
89
  end
214
- }
90
+ @deps.reject! { |k, v| v.empty? }
91
+
92
+ self.instance_eval do
93
+ def import_java_classes!
94
+ end
95
+ end if @deps.empty?
96
+ end
97
+ nil
215
98
  end
216
99
  end#class << self
217
100
  end