Search code examples
hbaseapache-phoenix

Apache Phoenix does not show future records


I added a new record in hbase (programatically) via

val row = new Put(rowKey, hTimestamp)

and via hbase shell

put 't1', 'r1', 'c1', 'value', 1470412800000

with a future timestamp.

In both instances, in Phoenix CLI, it doesn't show the record. But there's a record in HBase.

Is it not supported in Phoenix?


Solution

  • This is by design; Phoenix queries, through JDBC and presumably the CLI, use the current timestamp by default as the maximum timestamp associated with a HBase record. This is how Phoenix allows for retrieval of multi-versioned records.

    See https://phoenix.apache.org/faq.html#Can_phoenix_work_on_tables_with_arbitrary_timestamp_as_flexible_as_HBase_API for how to modify the "current timestamp" of the Phoenix connection - if you set this to a timestamp after your future timestamp value, you'll be able to retrieve your future-dated record. Presumably the CurrentSCN value can be supplied to the CLI as well?