2016-09-14 67 views
0

我試圖訪問通過Phoenix從Hbase創建的表。我能夠讀取字符串值,但無法讀取十進制值。例如,DECIMAL_PLACE_CNT的實際值爲6,但從hbase shellit顯示的值= \ xC1 \ x07
我怎樣才能將它推斷回6?如何從Hbase訪問Phoenix表

get 'ODS.CCY',"\x00ANG" 
COLUMN         CELL 
0:CCY_CTRY_CD       timestamp=1470245652652, value=NL 
0:CCY_DESC        timestamp=1470245652652, value=NETHERLANDS ANTILLIAN GUILDER 
0:CCY_RVSE_IND       timestamp=1470245652652, value=N 
0:DECIMAL_PLACE_CNT      timestamp=1470245652652, value=\xC1\x07 

回答

0

如上所述here,當與DECIMAL類型定義的列,鳳凰將映射值來java.math.BigDecimal
當向Hbase寫入值時,Phoenix將使用org.apache.phoenix.schema.types.PDataType.toBytesjava.math.BigDecimal的值序列化。該方法的源代碼是here,通過搜索static int toBytes可以找到準確的位置。

+0

感謝您的回答。你能否告訴日期類型是如何反序列化的? – zebb

+0

@zebb我認爲表的模式是在行數據旁邊的其他位置定義的,這意味着數據類型不會與您看到的值序列化。但是當它解析數據時,Phoenix可以從模式中獲取數據類型,並嘗試將其反序列化爲「BigDecimal」。 –