Skip to content

Latest commit

 

History

History
306 lines (255 loc) · 11 KB

CHANGELOG.md

File metadata and controls

306 lines (255 loc) · 11 KB

Changelog

0.7.1

  • Support setting one timestamp for all columns (#41)

0.7.0

  • Distinguish float and double
    • Cell#float / Cell#double
    • Row#float / Row#double
    • Row#floats / Row#doubles
    • Util.to_bytes 3.14 (double by default)
    • Util.to_bytes :float => 3.14
    • Util.to_bytes :double => 3.14
    • Util.from_bytes :float, bytes'
  • Removed automatic disable/enable to support online alter
  • Fixed HBase::Table#alter_family[!] not to drop previous non-default settings
  • Performance improvement with column key interpretation cache
  • Dependency resolution is now deprecated
  • HBase 1.0 client compatibility

0.6.4

Performance improvement (experimental)

HBase::Table instance can be set up to cache the interpretations of the column keys using thread-locals which can lead to 3-times faster Put generation in tight loops.

table = hbase[:my_table, cache: true]
# ...
table.close

However, the option is off by default because of the following issues:

  1. You should not use it with the tables with unlimited number of columns.
  2. Caching does not keep track of the updates of the schema. If you change the schema of an HBase object after you created an HBase::Table object with the cache turned on from it, the object may hold stale information on the types of the columns. HBase::Table#close method will clean up the cache.

0.6.3

  • Refactoring
    • Changed HBase::Row#to_h call to return a Hash extended with HBase::Row::HashExtension module which makes it possible to extend the returned Hash by monkey-patching the module
    • HBase::Row::HashExtension overrides #[] method to allow looking up data with both Array and String notation of column keys: [CF, CQ] or CF:CQ
  • Hash for describing column and table options can now contain XML entries using additional :config key.
hbase[:my_table].create! :d,
    # HTableDescriptor#setValue
   'MAX_FILESIZE' => 1 << 33,
   :config => {
     # HTableDescriptor#setConfiguration
     'hbase.hstore.compaction.max.size' => 1 << 30
   }

0.6.2

  • Removed automatic cleanup of thread-local HTable instances
    • Fixes issue #35
    • Close of individual HTable instance turned out to be unnecessary
      • flushCommits not required as hbase-jruby runs in auto-flush mode
      • No need to close shared connection or its thread pool

0.6.1

  • Fixed error on JRuby 1.7.13 (#34)

0.6.0

0.6.0 includes a few backward-incompatible changes.

  • Default number of versions for a scan or get is now changed to 1 to match Java API
    • Make sure to set versions to :all if you're calling to_H or plural datatype methods
      • scoped.versions(:all).to_H
      • scoped.versions(:all).strings('d:title')
  • Removed HBase::Table::BatchAction#mutate method
  • Added CDH5.1 dependency profile

0.5.1

  • Fixed Table#aggregate for HBase 0.98 or above

0.5.0

  • Added CDH5.0 (HBase 0.96.1.1) and CDH4.6 dependency profiles
    • If you share HBase instance between threads, you may need to set hbase.hconnection.threads.core due to a bug in CDH5.5.0.
  • Use HConnection instead of deprecated HTablePool when possible

0.4.6

0.4.5

  • Fixed HBase 0.96 compatibily issues and tested on HBase 0.96 and 0.98
  • Added :split_policy table property
  • Table#properties and Table#families now include previously unknown properties as String-String pairs
  • Added Row#byte_array which returns an instance of HBase::ByteArray
    • Equivalent to HBase::ByteArray[row.raw(col)]

0.4.4

  • Fixed HBase::Table#raw_families/raw_properties on HBase shell

0.4.3

  • Fixed HBase::Table#add_coprocessor[!] and HBase::Table#remove_coprocessor[!]

0.4.2

  • Fixed bug when using schema with non-String/Symbol qualifier
  • Updated dependency profiles
    • Added CDH4.5, CDH4.4 (same as CDH4.3)
    • 0.95, 0.96 (experimental, currently not working)
  • Improved compatibility with HBase shell which is based on JRuby 1.6.5

0.4.1

  • Fixed .META. scanning with range prefix (#26)
  • Added ByteArray#as as a synonym for ByteArray#decode

0.4.0

  • Added support for append operation: HBase::Table#append
  • Added support for atomic mutations on a single row: HBase::Table#mutate
  • Added support for batch operations: HBase::Table#batch
    • This method does not take an argument and requires a block
    • Don't be confused with the shortcut method to HBase::Scoped#batch(batch_size)
  • Changed HBase::Table#increment to return the updated values as a Hash
  • Fixed HBase.resolve_dependency!(:local) on CDH distribution
  • Empty-qualifier must be given as 'cf:', and not 'cf'
  • Added HBase::Row#empty? method
  • Added HBase::ByteArray#to_s method

0.3.5

  • Improved Scoped#count method
    • KeyOnlyFilter turned out to be compatible with SingleColumnValueFilter
    • Now takes an optional Hash: scoped.count(cache_blocks: false, caching: 100)
    • Changed not to disable server-side block caching by default
  • Supports Scoped#limit even when Scan.setMaxResultSize is not implemented
    • Scoped#limit(nil) will remove the previously set value

0.3.4

  • Cleanup all thread-local (fiber-local) HTable references when connection is closed
  • Added HBase#reset_table_pool method for recreating HTable pool

0.3.3

0.3.3 changes the way null values are handled, and introduces interface for CAS operations. It is strongly advised that you upgrade to 0.3.3 since it contains important fixes.

0.3.2

  • Added CDH4.3 dependency profile

0.3.1

  • Fixed a bug in 'cf:cq' => :type shortcut schema definition
  • Added schema data type validation
  • Fixed reference to ambiguous column names

0.3.0

  • Easier data access with table schema
    • HBase::Table#schema= method to provide the schema of the table
    • You can omit column family names on predefined columns
    • Automatic type conversion for known columns
  • 0.3.0 brings many backward-incompatible changes
    • Row#to_hash and Row#to_hash_with_versions are now deprecated. Use to_h and to_H instead without arguments.
    • Default parameters for HBase::Row#rowkey and HBase::Cell#rowkey are now :raw instead of :string.
    • HBase::ColumnKey is removed. Use plain 2-element Arrays instead.
    • Enumerable classes (Table, Scoped, Row, ByteArray) now return Enumerator on each method when block not given
    • Cell#value can now return the correct data type if defined in the schema. For Java byte array, use Cell#raw.
    • Row#[type|types] methods no more take Array of columns as arguments
  • Added HBase::Table#scoped method to return HBase::Scoped object for the table
  • Added HBase::Cell#{eql?,hash} method for equaility check

0.2.6

  • Fixed HBase::Scoped#filter method to take short integer (byte, short, int) values
  • Fixed HBase::Scoped#range method to take short integer (byte, short, int) values

0.2.5

  • Added HBase::Table#snapshots method
  • Added HBase::Table#snapshot! method
  • Added HBase#snapshots method
  • Added HBase::Cell#{raw,int,short,byte} methods
  • Updated dependency profiles: cdh4.2.1, cdh4.1.4

0.2.4

  • Fixed NameError when HBase::ByteArray is used without first creating an HBase instance
  • Updated dependency profiles: 0.95.0, 0.94.6.1, 0.92.2, cdh3u6

0.2.3

0.2.2

  • Added HBase::Table#delete_row method
  • Dependency profiles as prefixes
    • Supported prefixes: cdh4.1, cdh3, 0.94, 0.92
    • e.g. HBase.resolve_dependency! 'cdh4.1.3'
  • Advanced data access with Scoped#with_java_scan and Scoped#with_java_get

0.2.1

  • Fix: NameError even when appropriate CLASSPATH is set

0.2.0

  • Deprecated HBase::Table#close. You don't need to close Table instances.
  • Added HBase::Table#split and HBase::Table#split! method
  • Added :splits option to HTable#create! method to pre-split the table
  • Added table inspection methods: properties, families, and regions
  • Added raw inspection methods: raw_properties and raw_families
  • Added HBase.log4j= method
  • Added HBase::Scoped#at, HBase::Scoped#time_range method
  • Changed parameters to HBase.resolve_dependency! method
  • Ruby Time object can be used as timestamp in put and delete methods
  • Using closed HBase connection is disallowed
  • Ruby 1.8 compatibility mode (Oops!)

0.1.6

  • Maven dependencies for 0.94 and 0.92
  • Progress reporting for synchronous table administration
  • Added asynchronous versions of table administration methods

0.1.5

  • Added support for shorter integers
  • Extended HBase::ByteArray for easy manipulation of Java byte arrays

0.1.4

  • Fix: Start/stop row not correctly set when byte array rowkey range specified
  • More efficient count with FirstKeyOnlyFilter
  • Added HBase::ByteArray method as a shorthand notation for HBase::ByteArray.new
  • Added HBase::ByteArray#+ method for concatenating two byte arrays
  • Added HBase::Util::java_bytes? method
  • Documentation

0.1.3

  • Supports Ruby 1.8 compatibility mode
  • Fix: Correct return value from HBase::resolve_dependency!
  • Fix: Appropriately close result scanners

0.1.2

  • Dropped Bignum support. Automatic conversion from Fixnum to Bignum (or vice versa) will produce columns whose values are of heterogeneous types, that are impossible to be read in a consistent way. You can use BigDecimal type instead for large numbers.
  • Added HBase::Scoped#while which allows early termination of scan with WhileMatchFilter
  • Filtering with regular expressions
  • Implemented comparator for HBase::Result
  • Added coprocessor administration methods
  • Basic aggregation with Coprocessor
  • HBase::Scoped#count with block
  • Allows PUT operation with timestamps