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.
-
#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.HTable
(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
29 30 31 |
# File 'lib/hbase-jruby/table.rb', line 29 def close nil 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
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/hbase-jruby/table.rb', line 108 def delete *args 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.
133 134 135 |
# File 'lib/hbase-jruby/table.rb', line 133 def delete_row *rowkeys 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
172 173 174 175 176 177 178 179 180 |
# File 'lib/hbase-jruby/table.rb', line 172 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.HTable
(INTERNAL) Returns the underlying org.apache.hadoop.hbase.client.HTable object (local to current thread)
20 21 22 23 24 25 |
# File 'lib/hbase-jruby/table.rb', line 20 def htable check_closed local_htables = Thread.current[:htable] ||= {} local_htables[@name] ||= @pool.get_table(@name) end |
#increment(rowkey, column, by) ⇒ Fixnum #increment(rowkey, column_by_hash) ⇒ Object
Atomically increase numeric values
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/hbase-jruby/table.rb', line 152 def increment rowkey, *args 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
61 62 63 64 65 66 67 |
# File 'lib/hbase-jruby/table.rb', line 61 def put *args 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
47 48 49 |
# File 'lib/hbase-jruby/table.rb', line 47 def with_java_get &block self.each.with_java_get(&block) end |
#with_java_scan(&block) ⇒ Object
43 44 45 |
# File 'lib/hbase-jruby/table.rb', line 43 def with_java_scan &block self.each.with_java_scan(&block) end |