Class: HBase::Table
- Inherits:
-
Object
- Object
- HBase::Table
- Includes:
- Enumerable, Admin, Scoped::Aggregation::Admin, Util
- Defined in:
- lib/hbase-jruby/table.rb,
lib/hbase-jruby/table/admin.rb,
lib/hbase-jruby/table/inspection.rb
Overview
@return [org.apache.hadoop.conf.Configuration]
Constant Summary
Constants included from Util
Util::JAVA_BYTE_ARRAY_CLASS, Util::JAVA_BYTE_ARRAY_EMPTY
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
-
#add_coprocessor(class_name, props = {}) ⇒ Object
Adds the table coprocessor to the table (asynchronous).
-
#add_coprocessor!(class_name, props = {}) {|progress, total| ... } ⇒ Object
Adds the table coprocessor to the table.
-
#add_family(name, opts) ⇒ Object
Adds the column family (asynchronous).
-
#add_family!(name, opts) {|progress, total| ... } ⇒ nil
Adds the column family (synchronous).
-
#alter(props) ⇒ Object
Alters the table (asynchronous).
-
#alter!(props) {|progress, total| ... } ⇒ nil
Alters the table (synchronous).
-
#alter_family(name, opts) ⇒ Object
Alters the column family (asynchronous).
-
#alter_family!(name, opts) {|progress, total| ... } ⇒ nil
Alters the column family.
- #close ⇒ nil deprecated Deprecated.
-
#closed? ⇒ Boolean
Returns whether if the connection is closed.
-
#create!(desc, props = {}) ⇒ Object
Creates the table.
-
#delete(*args) ⇒ Object
Deletes data.
-
#delete_family(name) ⇒ Object
Removes the column family (asynchronous).
-
#delete_family!(name) {|progress, total| ... } ⇒ nil
Removes the column family.
-
#delete_row(*rowkeys) ⇒ nil
Delete rows.
-
#descriptor ⇒ org.apache.hadoop.hbase.client.UnmodifyableHTableDescriptor
Returns a read-only org.apache.hadoop.hbase.HTableDescriptor object.
-
#disable! ⇒ nil
Disables the table.
-
#disabled? ⇒ true, false
Checks if the table is disabled.
-
#drop! ⇒ nil
Drops the table.
-
#each {|row| ... } ⇒ HBase::Scoped
Scan through the table.
-
#enable! ⇒ nil
Enables the table.
-
#enabled? ⇒ true, false
Checks if the table is enabled.
-
#exists? ⇒ true, false
Checks if the table of the name exists.
-
#families ⇒ Hash
Returns properties of column families indexed by family name.
-
#has_coprocessor?(class_name) ⇒ true, false
Return if the table has the coprocessor of the given class name.
-
#htable ⇒ org.apache.hadoop.hbase.client.PooledHTable
(INTERNAL) Returns the underlying org.apache.hadoop.hbase.client.HTable object (local to current thread).
-
#increment(rowkey, *args) ⇒ Object
Atomically increase numeric values.
-
#inspect ⇒ String
Returns a printable version of the table description.
-
#properties ⇒ Hash
Returns table properties.
-
#put(*args) ⇒ Object
Performs PUT operations.
-
#raw_families ⇒ Hash
Returns raw String-to-String map of column family properties indexed by name.
-
#raw_properties ⇒ Hash
Returns raw String-to-String map of table properties.
-
#regions ⇒ Hash
Returns region information.
-
#remove_coprocessor(class_name) ⇒ Object
Removes the coprocessor from the table (asynchronous).
-
#remove_coprocessor!(class_name) {|progress, total| ... } ⇒ nil
Removes the coprocessor from the table.
-
#split!(*split_keys) ⇒ nil
Splits the table region on the given split point (asynchronous).
-
#truncate! ⇒ nil
Truncates the table by dropping it and recreating it.
- #with_java_get(&block) ⇒ Object
- #with_java_scan(&block) ⇒ Object
Methods included from Util
append_0, from_bytes, java_bytes?, parse_column_name, to_bytes
Methods included from Scoped::Aggregation::Admin
#enable_aggregation, #enable_aggregation!
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
11 12 13 |
# File 'lib/hbase-jruby/table.rb', line 11 def config @config end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
10 11 12 |
# File 'lib/hbase-jruby/table.rb', line 10 def name @name end |
Instance Method Details
#add_coprocessor(class_name, props = {}) ⇒ Object
Adds the table coprocessor to the table (asynchronous)
173 174 175 |
# File 'lib/hbase-jruby/table/admin.rb', line 173 def add_coprocessor class_name, props = {} _add_coprocessor class_name, props, false end |
#add_coprocessor!(class_name, props = {}) {|progress, total| ... } ⇒ Object
Adds the table coprocessor to the table
168 169 170 |
# File 'lib/hbase-jruby/table/admin.rb', line 168 def add_coprocessor! class_name, props = {}, &block _add_coprocessor class_name, props, true, &block end |
#add_family(name, opts) ⇒ Object
Adds the column family (asynchronous)
122 123 124 |
# File 'lib/hbase-jruby/table/admin.rb', line 122 def add_family name, opts _add_family name, opts, false end |
#add_family!(name, opts) {|progress, total| ... } ⇒ nil
Adds the column family (synchronous)
116 117 118 |
# File 'lib/hbase-jruby/table/admin.rb', line 116 def add_family! name, opts, &block _add_family name, opts, true, &block end |
#alter(props) ⇒ Object
Alters the table (asynchronous)
105 106 107 |
# File 'lib/hbase-jruby/table/admin.rb', line 105 def alter props _alter props, false end |
#alter!(props) {|progress, total| ... } ⇒ nil
Alters the table (synchronous)
99 100 101 |
# File 'lib/hbase-jruby/table/admin.rb', line 99 def alter! props, &block _alter props, true, &block end |
#alter_family(name, opts) ⇒ Object
Alters the column family (asynchronous)
139 140 141 |
# File 'lib/hbase-jruby/table/admin.rb', line 139 def alter_family name, opts _alter_family name, opts, false end |
#alter_family!(name, opts) {|progress, total| ... } ⇒ nil
Alters the column family
133 134 135 |
# File 'lib/hbase-jruby/table/admin.rb', line 133 def alter_family! name, opts, &block _alter_family name, opts, true, &block end |
#close ⇒ nil
31 32 33 |
# File 'lib/hbase-jruby/table.rb', line 31 def close nil end |
#closed? ⇒ Boolean
Returns whether if the connection is closed
37 38 39 |
# File 'lib/hbase-jruby/table.rb', line 37 def closed? @hbase.closed? end |
#create!(column_family_name, props = {}) ⇒ nil #create!(column_family_hash, props = {}) ⇒ nil #create!(table_descriptor) ⇒ nil
Creates the table
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/hbase-jruby/table/admin.rb', line 54 def create! desc, props = {} splits = if props[:splits] raise ArgumentError, ":splits property must be an Array" if !props[:splits].is_a?(Array) props[:splits].map { |e| Util.to_bytes(e).to_a }.to_java(Java::byte[]) end todo = nil with_admin do |admin| raise RuntimeError, 'Table already exists' if admin.tableExists(@name) case desc when HTableDescriptor patch_table_descriptor! desc, props admin.createTable(*[desc, splits].compact) when Symbol, String todo = lambda { create!({desc => {}}, props) } when Hash htd = HTableDescriptor.new(@name.to_java_bytes) patch_table_descriptor! htd, props desc.each do |name, opts| htd.addFamily hcd(name, opts) end admin.createTable(*[htd, splits].compact) else raise ArgumentError, 'Invalid table description' end end todo.call if todo # Avoids mutex relocking end |
#delete(rowkey) ⇒ nil #delete(rowkey, column_family) ⇒ nil #delete(rowkey, column) ⇒ nil #delete(rowkey, column, *timestamps) ⇒ nil #delete(*delete_specs) ⇒ nil
Deletes data
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/hbase-jruby/table.rb', line 118 def delete *args check_closed specs = args.first.is_a?(Array) ? args : [args] htable.delete specs.map { |spec| rowkey, cfcq, *ts = spec cf, cq = Util.parse_column_name(cfcq) if cfcq Delete.new(Util.to_bytes rowkey).tap { |del| if !ts.empty? ts.each do |t| del.deleteColumn cf, cq, time_to_long(t) end elsif cq # Delete all versions del.deleteColumns cf, cq elsif cf del.deleteFamily cf end } } end |
#delete_family(name) ⇒ Object
Removes the column family (asynchronous)
155 156 157 |
# File 'lib/hbase-jruby/table/admin.rb', line 155 def delete_family name _delete_family name, false end |
#delete_family!(name) {|progress, total| ... } ⇒ nil
Removes the column family
149 150 151 |
# File 'lib/hbase-jruby/table/admin.rb', line 149 def delete_family! name, &block _delete_family name, true, &block end |
#delete_row(*rowkeys) ⇒ nil
Delete rows.
145 146 147 148 149 |
# File 'lib/hbase-jruby/table.rb', line 145 def delete_row *rowkeys check_closed htable.delete rowkeys.map { |rk| Delete.new(Util.to_bytes rk) } end |
#descriptor ⇒ org.apache.hadoop.hbase.client.UnmodifyableHTableDescriptor
Returns a read-only org.apache.hadoop.hbase.HTableDescriptor object
5 6 7 |
# File 'lib/hbase-jruby/table/inspection.rb', line 5 def descriptor htable.get_table_descriptor end |
#disable! ⇒ nil
Disables the table
217 218 219 220 221 |
# File 'lib/hbase-jruby/table/admin.rb', line 217 def disable! with_admin do |admin| admin.disableTable @name if admin.isTableEnabled(@name) end end |
#disabled? ⇒ true, false
Checks if the table is disabled
17 18 19 |
# File 'lib/hbase-jruby/table/admin.rb', line 17 def disabled? !enabled? end |
#drop! ⇒ nil
Drops the table
233 234 235 236 237 238 239 240 241 |
# File 'lib/hbase-jruby/table/admin.rb', line 233 def drop! with_admin do |admin| raise RuntimeError, 'Table does not exist' unless admin.tableExists @name admin.disableTable @name if admin.isTableEnabled(@name) admin.deleteTable @name close end end |
#each {|row| ... } ⇒ HBase::Scoped
Scan through the table
188 189 190 191 192 193 194 195 196 |
# File 'lib/hbase-jruby/table.rb', line 188 def each check_closed if block_given? Scoped.send(:new, self).each { |r| yield r } else Scoped.send(:new, self) end end |
#enable! ⇒ nil
Enables the table
209 210 211 212 213 |
# File 'lib/hbase-jruby/table/admin.rb', line 209 def enable! with_admin do |admin| admin.enableTable @name unless admin.isTableEnabled(@name) end end |
#enabled? ⇒ true, false
Checks if the table is enabled
11 12 13 |
# File 'lib/hbase-jruby/table/admin.rb', line 11 def enabled? with_admin { |admin| admin.isTableEnabled(@name) } end |
#exists? ⇒ true, false
Checks if the table of the name exists
5 6 7 |
# File 'lib/hbase-jruby/table/admin.rb', line 5 def exists? with_admin { |admin| admin.tableExists @name } end |
#families ⇒ Hash
Returns properties of column families indexed by family name
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/hbase-jruby/table/inspection.rb', line 31 def families {}.tap { |ret| descriptor.families.each do |family| name = family.name_as_string ret[name] = {}.tap { |props| COLUMN_PROPERTIES.each do |prop, gs| get = gs[:get] if get && family.respond_to?(get) props[prop] = parse_property family.send get end end } end } end |
#has_coprocessor?(class_name) ⇒ true, false
Return if the table has the coprocessor of the given class name
196 197 198 |
# File 'lib/hbase-jruby/table/admin.rb', line 196 def has_coprocessor? class_name descriptor.hasCoprocessor(class_name) end |
#htable ⇒ org.apache.hadoop.hbase.client.PooledHTable
(INTERNAL) Returns the underlying org.apache.hadoop.hbase.client.HTable object (local to current thread)
20 21 22 23 24 25 26 27 |
# File 'lib/hbase-jruby/table.rb', line 20 def htable check_closed # [:hbase_jruby][HBase connection][Table name] local_vars = Thread.current[:hbase_jruby] ||= {} local_htables = local_vars[@hbase] ||= {} local_htables[@name] ||= @pool.get_table(@name) end |
#increment(rowkey, column, by) ⇒ Fixnum #increment(rowkey, column_by_hash) ⇒ Object
Atomically increase numeric values
166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/hbase-jruby/table.rb', line 166 def increment rowkey, *args check_closed if args.first.is_a?(Hash) cols = args.first htable.increment Increment.new(Util.to_bytes rowkey).tap { |inc| cols.each do |col, by| cf, cq = Util.parse_column_name(col) inc.addColumn cf, cq, by end } else col, by = args cf, cq = Util.parse_column_name(col) htable.incrementColumnValue Util.to_bytes(rowkey), cf, cq, by || 1 end end |
#inspect ⇒ String
Returns a printable version of the table description
69 70 71 72 73 74 75 76 |
# File 'lib/hbase-jruby/table/inspection.rb', line 69 def inspect if exists? descriptor.toStringCustomizedValues else # FIXME "{NAME => '#{@name}'}" end end |
#properties ⇒ Hash
Returns table properties
11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/hbase-jruby/table/inspection.rb', line 11 def properties desc = descriptor {}.tap { |props| TABLE_PROPERTIES.each do |prop, gs| get = gs[:get] if get && desc.respond_to?(get) props[prop] = parse_property desc.send get end end } end |
#put(rowkey, data) ⇒ Fixnum #put(data) ⇒ Fixnum
Performs PUT operations
69 70 71 72 73 74 75 76 77 |
# File 'lib/hbase-jruby/table.rb', line 69 def put *args check_closed return put(args.first => args.last) if args.length == 2 puts = args.first.map { |rowkey, props| putify rowkey, props } htable.put puts puts.length end |
#raw_families ⇒ Hash
Returns raw String-to-String map of column family properties indexed by name
50 51 52 53 54 55 56 57 |
# File 'lib/hbase-jruby/table/inspection.rb', line 50 def raw_families {}.tap { |ret| descriptor.families.each do |family| name = family.name_as_string ret[name] = parse_raw_map family.values end } end |
#raw_properties ⇒ Hash
Returns raw String-to-String map of table properties
25 26 27 |
# File 'lib/hbase-jruby/table/inspection.rb', line 25 def raw_properties parse_raw_map descriptor.values end |
#regions ⇒ Hash
Returns region information
61 62 63 64 65 |
# File 'lib/hbase-jruby/table/inspection.rb', line 61 def regions with_admin do |admin| _regions admin end end |
#remove_coprocessor(class_name) ⇒ Object
Removes the coprocessor from the table (asynchronous)
189 190 191 |
# File 'lib/hbase-jruby/table/admin.rb', line 189 def remove_coprocessor class_name _remove_coprocessor class_name, false end |
#remove_coprocessor!(class_name) {|progress, total| ... } ⇒ nil
Removes the coprocessor from the table.
183 184 185 |
# File 'lib/hbase-jruby/table/admin.rb', line 183 def remove_coprocessor! class_name, &block _remove_coprocessor class_name, true, &block end |
#split!(*split_keys) ⇒ nil
Splits the table region on the given split point (asynchronous)
203 204 205 |
# File 'lib/hbase-jruby/table/admin.rb', line 203 def split! *split_keys _split split_keys, false end |
#truncate! ⇒ nil
Truncates the table by dropping it and recreating it.
225 226 227 228 229 |
# File 'lib/hbase-jruby/table/admin.rb', line 225 def truncate! htd = htable.get_table_descriptor drop! create! htd end |
#with_java_get(&block) ⇒ Object
55 56 57 |
# File 'lib/hbase-jruby/table.rb', line 55 def with_java_get &block self.each.with_java_get(&block) end |
#with_java_scan(&block) ⇒ Object
51 52 53 |
# File 'lib/hbase-jruby/table.rb', line 51 def with_java_scan &block self.each.with_java_scan(&block) end |