hbase-jruby 0.2.3-java → 0.2.4-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/CHANGELOG.md +5 -0
- data/README.md +15 -10
- data/lib/hbase-jruby/byte_array.rb +15 -4
- data/lib/hbase-jruby/dependency.rb +9 -5
- data/lib/hbase-jruby/pom/pom.xml.erb +6 -29
- data/lib/hbase-jruby/scoped.rb +2 -2
- data/lib/hbase-jruby/table/admin.rb +2 -2
- data/lib/hbase-jruby/util.rb +14 -0
- data/lib/hbase-jruby/version.rb +1 -1
- metadata +2 -2
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
0.2.4
|
5
|
+
-----
|
6
|
+
- Fixed NameError when HBase::ByteArray is used without first creating an HBase instance
|
7
|
+
- Updated dependency profiles: 0.95.0, 0.94.6.1, 0.92.2, cdh3u6
|
8
|
+
|
4
9
|
0.2.3
|
5
10
|
-----
|
6
11
|
- Fix: [Thread.current[:htable] must be local to each connection](https://github.com/junegunn/hbase-jruby/issues/4)
|
data/README.md
CHANGED
@@ -66,15 +66,19 @@ or by `require`ing relevant JAR files after launching JRuby.
|
|
66
66
|
Well, there's an easier way.
|
67
67
|
Call `HBase.resolve_dependency!` helper method passing one of the arguments listed below.
|
68
68
|
|
69
|
-
| Argument | Dependency | Required executable |
|
70
|
-
|
71
|
-
| cdh4.2[.*] | Cloudera CDH4.2 | mvn |
|
72
|
-
| cdh4.1[.*] | Cloudera CDH4.1 | mvn |
|
73
|
-
| cdh3[u*] | Cloudera CDH3 | mvn |
|
74
|
-
| 0.
|
75
|
-
| 0.
|
76
|
-
|
|
77
|
-
|
|
69
|
+
| Argument | Dependency | Default version | Required executable |
|
70
|
+
| ---------- | ------------------------ | --------------- | ------------------- |
|
71
|
+
| cdh4.2[.*] | Cloudera CDH4.2 | cdh4.2.0 | mvn |
|
72
|
+
| cdh4.1[.*] | Cloudera CDH4.1 | cdh4.1.3 | mvn |
|
73
|
+
| cdh3[u*] | Cloudera CDH3 | cdh3u6 | mvn |
|
74
|
+
| 0.95[.*] | Apache HBase 0.95 | 0.95.0 | mvn |
|
75
|
+
| 0.94[.*] | Apache HBase 0.94 | 0.94.6.1 | mvn |
|
76
|
+
| 0.92[.*] | Apache HBase 0.92 | 0.92.2 | mvn |
|
77
|
+
| *POM PATH* | Custom Maven POM file | - | mvn |
|
78
|
+
| `:local` | Local HBase installation | - | hbase |
|
79
|
+
|
80
|
+
(Default version is used when an argument prefix is given without specific patch version.
|
81
|
+
e.g. `cdh4.2` defaults to `cdh4.2.0`)
|
78
82
|
|
79
83
|
#### Examples
|
80
84
|
|
@@ -84,7 +88,7 @@ HBase.resolve_dependency! 'cdh4.2.0'
|
|
84
88
|
HBase.resolve_dependency! 'cdh4.1.3'
|
85
89
|
|
86
90
|
# Load JAR files of HBase 0.94.x using Maven
|
87
|
-
HBase.resolve_dependency! '0.94.1'
|
91
|
+
HBase.resolve_dependency! '0.94.6.1'
|
88
92
|
HBase.resolve_dependency! '0.94.2', :verbose => true
|
89
93
|
|
90
94
|
# Dependency resolution with custom POM file
|
@@ -92,6 +96,7 @@ HBase.resolve_dependency! '/path/to/my/pom.xml'
|
|
92
96
|
HBase.resolve_dependency! '/path/to/my/pom.xml', :profile => 'trunk'
|
93
97
|
|
94
98
|
# Load JAR files from local HBase installation
|
99
|
+
# (equivalent to: export CLASSPATH=$CLASSPATH:`hbase classpath`)
|
95
100
|
HBase.resolve_dependency! :local
|
96
101
|
```
|
97
102
|
|
@@ -20,9 +20,13 @@ class ByteArray
|
|
20
20
|
# each converted to its byte array representation
|
21
21
|
# @param [*Object] values
|
22
22
|
def initialize *values
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
HBase.import_java_classes!
|
24
|
+
if defined?(Bytes) && defined?(Arrays)
|
25
|
+
ByteArray.class_eval do
|
26
|
+
alias initialize initialize_
|
27
|
+
end
|
28
|
+
end
|
29
|
+
initialize_(*values)
|
26
30
|
end
|
27
31
|
|
28
32
|
def each
|
@@ -111,7 +115,7 @@ class ByteArray
|
|
111
115
|
length
|
112
116
|
end
|
113
117
|
raise ArgumentError.new("Byte length must be specified for type: #{type}") unless length
|
114
|
-
raise ArgumentError.new("Not
|
118
|
+
raise ArgumentError.new("Not enough bytes for #{type}") if length > @java.length
|
115
119
|
|
116
120
|
arr = @java.to_a
|
117
121
|
val = arr[0, length].to_java(Java::byte)
|
@@ -142,6 +146,13 @@ class ByteArray
|
|
142
146
|
def hash
|
143
147
|
Arrays.java_send(:hashCode, [Util::JAVA_BYTE_ARRAY_CLASS], @java)
|
144
148
|
end
|
149
|
+
|
150
|
+
private
|
151
|
+
def initialize_ *values
|
152
|
+
@java = values.inject(Util::JAVA_BYTE_ARRAY_EMPTY) { |sum, value|
|
153
|
+
Bytes.add sum, Util.to_bytes(value)
|
154
|
+
}
|
155
|
+
end
|
145
156
|
end#ByteArray
|
146
157
|
end#HBase
|
147
158
|
|
@@ -7,13 +7,17 @@ require 'erb'
|
|
7
7
|
class HBase
|
8
8
|
|
9
9
|
# @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
|
10
13
|
SUPPORTED_PROFILES = {
|
11
|
-
# Prefix => Latest version
|
14
|
+
# Prefix => Latest known version
|
12
15
|
'cdh4.2' => 'cdh4.2.0',
|
13
16
|
'cdh4.1' => 'cdh4.1.3',
|
14
|
-
'cdh3' => '
|
15
|
-
'0.
|
16
|
-
'0.
|
17
|
+
'cdh3' => 'cdh3u6',
|
18
|
+
'0.95' => '0.95.0',
|
19
|
+
'0.94' => '0.94.6.1',
|
20
|
+
'0.92' => '0.92.2',
|
17
21
|
}
|
18
22
|
|
19
23
|
class << self
|
@@ -111,7 +115,7 @@ class HBase
|
|
111
115
|
end
|
112
116
|
|
113
117
|
# Import Java classes (Prerequisite for classes in hbase-jruby)
|
114
|
-
# @return [Array<String>] List of Java classes
|
118
|
+
# @return [Array<String>] List of Java classes *NOT* found
|
115
119
|
def import_java_classes!
|
116
120
|
imp = lambda { |hash|
|
117
121
|
hash.map { |base, classes|
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
<groupId>hbase-jruby</groupId>
|
6
6
|
<artifactId>hbase-project</artifactId>
|
7
|
-
<version>0.2.
|
7
|
+
<version>0.2.4</version>
|
8
8
|
<packaging>jar</packaging>
|
9
9
|
|
10
10
|
<name>hbase-jruby</name>
|
@@ -115,37 +115,13 @@
|
|
115
115
|
</dependencies>
|
116
116
|
</profile>
|
117
117
|
|
118
|
+
<% %w[0.92 0.94 0.95].each do |version| %>
|
118
119
|
<profile>
|
119
|
-
<id
|
120
|
+
<id><%= version %></id>
|
120
121
|
<properties>
|
121
122
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
122
|
-
<hadoop.version>1.1.
|
123
|
-
<hbase.version><%= profiles[
|
124
|
-
</properties>
|
125
|
-
|
126
|
-
<dependencies>
|
127
|
-
<dependency>
|
128
|
-
<groupId>org.apache.hadoop</groupId>
|
129
|
-
<artifactId>hadoop-core</artifactId>
|
130
|
-
<version>${hadoop.version}</version>
|
131
|
-
<scope>compile</scope>
|
132
|
-
</dependency>
|
133
|
-
|
134
|
-
<dependency>
|
135
|
-
<groupId>org.apache.hbase</groupId>
|
136
|
-
<artifactId>hbase</artifactId>
|
137
|
-
<version>${hbase.version}</version>
|
138
|
-
<scope>compile</scope>
|
139
|
-
</dependency>
|
140
|
-
</dependencies>
|
141
|
-
</profile>
|
142
|
-
|
143
|
-
<profile>
|
144
|
-
<id>0.94</id>
|
145
|
-
<properties>
|
146
|
-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
147
|
-
<hadoop.version>1.1.1</hadoop.version>
|
148
|
-
<hbase.version><%= profiles['0.94'] %></hbase.version>
|
123
|
+
<hadoop.version>1.1.2</hadoop.version>
|
124
|
+
<hbase.version><%= profiles[version] %></hbase.version>
|
149
125
|
</properties>
|
150
126
|
|
151
127
|
<dependencies>
|
@@ -164,6 +140,7 @@
|
|
164
140
|
</dependency>
|
165
141
|
</dependencies>
|
166
142
|
</profile>
|
143
|
+
<% end %>
|
167
144
|
</profiles>
|
168
145
|
</project>
|
169
146
|
|
data/lib/hbase-jruby/scoped.rb
CHANGED
@@ -389,7 +389,7 @@ private
|
|
389
389
|
# Timerange / Timestamp
|
390
390
|
case @trange
|
391
391
|
when Array
|
392
|
-
get.setTimeRange
|
392
|
+
get.setTimeRange(*@trange)
|
393
393
|
when Time, Fixnum
|
394
394
|
get.setTimeStamp @trange
|
395
395
|
end
|
@@ -520,7 +520,7 @@ private
|
|
520
520
|
# Timerange / Timestamp
|
521
521
|
case @trange
|
522
522
|
when Array
|
523
|
-
scan.setTimeRange
|
523
|
+
scan.setTimeRange(*@trange)
|
524
524
|
when Time, Fixnum
|
525
525
|
scan.setTimeStamp @trange
|
526
526
|
end
|
@@ -65,7 +65,7 @@ class Table
|
|
65
65
|
case desc
|
66
66
|
when HTableDescriptor
|
67
67
|
patch_table_descriptor! desc, props
|
68
|
-
admin.createTable
|
68
|
+
admin.createTable(*[desc, splits].compact)
|
69
69
|
when Symbol, String
|
70
70
|
todo = lambda { create!({desc => {}}, props) }
|
71
71
|
when Hash
|
@@ -75,7 +75,7 @@ class Table
|
|
75
75
|
htd.addFamily hcd(name, opts)
|
76
76
|
end
|
77
77
|
|
78
|
-
admin.createTable
|
78
|
+
admin.createTable(*[htd, splits].compact)
|
79
79
|
else
|
80
80
|
raise ArgumentError, 'Invalid table description'
|
81
81
|
end
|
data/lib/hbase-jruby/util.rb
CHANGED
@@ -14,6 +14,8 @@ module Util
|
|
14
14
|
# @param [byte[]] v
|
15
15
|
# @return [byte[]]
|
16
16
|
def to_bytes v
|
17
|
+
import_java_classes!
|
18
|
+
|
17
19
|
case v
|
18
20
|
when Array
|
19
21
|
v.to_java(Java::byte)
|
@@ -70,6 +72,7 @@ module Util
|
|
70
72
|
def from_bytes type, val
|
71
73
|
return nil if val.nil?
|
72
74
|
|
75
|
+
import_java_classes!
|
73
76
|
case type
|
74
77
|
when :string, :str
|
75
78
|
Bytes.to_string val
|
@@ -124,6 +127,17 @@ module Util
|
|
124
127
|
return cf, cq
|
125
128
|
end
|
126
129
|
end
|
130
|
+
|
131
|
+
private
|
132
|
+
def import_java_classes!
|
133
|
+
HBase.import_java_classes!
|
134
|
+
if defined?(ByteBuffer) && defined?(KeyValue) && defined?(Bytes)
|
135
|
+
self.instance_eval do
|
136
|
+
def import_java_classes!
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
127
141
|
end
|
128
142
|
|
129
143
|
private
|
data/lib/hbase-jruby/version.rb
CHANGED
metadata
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
name: hbase-jruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.4
|
6
6
|
platform: java
|
7
7
|
authors:
|
8
8
|
- Junegunn Choi
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: test-unit
|