2016-09-14 5 views
0

Я пытаюсь получить доступ к таблице, созданной через Phoenix от Hbase. Я могу читать строковые значения, но не умею читать десятичные значения. Например, DECIMAL_PLACE_CNT имеет действительное значение 6, но из hbase shellit показывает значение = \ xC1 \ x07
Как я могу его вернуть до 6?Как получить доступ к таблице Phoenix от Hbase

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 будет сериализовать значение java.math.BigDecimal, используя org.apache.phoenix.schema.types.PDataType.toBytes. Исходный код этого метода: here, точное местоположение можно найти, выполнив поиск static int toBytes.

+0

Спасибо за ваш ответ. Не могли бы вы рассказать, как десериализован тип даты. – zebb

+0

@zebb Я думаю, что схема таблицы определена где-то еще рядом с данными строки, что означает, что тип данных не сериализуется со значением, которое вы видели. но когда он анализирует данные, Phoenix может получить тип данных из схемы и попытаться десериализовать его на '' 'BigDecimal'''. –

 Смежные вопросы

  • Нет связанных вопросов^_^