Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]

Archives of Support Questions (Read Only)

This is an archived board for historical reference. Information and links may no longer be available or relevant
Announcements
This board is archived and read-only for historical reference. To ask a new question, please post a new topic on the appropriate active board.

Created Phoenix view to map existing HBase table, but got different float value on a row

avatar
New Member

I have created a view to map to an existing HBase table as following:

create view "wanghai:obsweather"(pk  VARCHAR primary key,

"d"."stationid" VARCHAR,

"d"."temp"  Float,

...);

In Hbase shell, my query on a row/column yields the following:

hbase(main):004:0> get 'wanghai:obsweather', 'AP611_mesonet|2014-02-01 00:01:30', 'd:temp:toFloat'

COLUMN  CELL    

d:temp  timestamp=1454132157194, value=274.261108398437   

1 row(s) in 0.0210 seconds

In Phoenix sqlline.py, I got the following:

0: jdbc:phoenix:localhost:2181:/hbase-unsecur> select pk, "d"."stationid", "d"."temp" from "wanghai:obsweather"

. . . . . . . . . . . . . . . . . . . . . . .> where pk='AP611_mesonet|2014-02-01 00:01:30';

'PK','stationid','temp'

'AP611_mesonet|2014-02-01 00:01:30','AP611_mesonet','-0.015067715'

1 row selected (0.11 seconds)

Any idea for the same (row, cf:q), why I get "274.2611" from Hbase shell, but "-0.015067715" in Phoenix?

What is wrong?

1 ACCEPTED SOLUTION

avatar
Guru

HBase and Phoenix encode floats and some other data types differently.

This is from https://phoenix.apache.org/

The other caveat is that the way the bytes were serialized in HBase must match the way the bytes are expected to be serialized by Phoenix. For VARCHAR,CHAR, and UNSIGNED_* types, Phoenix uses the HBase Bytes utility methods to perform serialization. The CHAR type expects only single-byte characters and the UNSIGNED types expect values greater than or equal to zero.

Our composite row keys are formed by simply concatenating the values together, with a zero byte character used as a separator after a variable length type. For more information on our type system, see the Data Type.

View solution in original post

11 REPLIES 11

avatar
New Member

Thank you very much Enis!

avatar
Guru

No worries! Keep on HBase'ing.