2016-09-14 8 views
0

HbaseからPhoenixで作成したテーブルにアクセスしようとしています。たとえば、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

としては、タイプDECIMALでカラムを定義したとき、フェニックスjava.math.BigDecimalに値をマップする、hereを記載しました。
Hbaseに値を書き込むとき、Phoenixはを使用してjava.math.BigDecimalの値をシリアル化します。このメソッドのソースコードはhereです。正確な位置はstatic int toBytesを検索すると見つかります。

+0

あなたの答えをありがとう。どのように日付型が逆シリアル化されたかを教えてください。 – zebb

+0

@zebbテーブルのスキーマは行データの横のどこかで定義されていると思います。つまり、データ型があなたが見た値でシリアル化されていないことを意味します。しかし、データを解析すると、Phoenixはスキーマからデータ型を取得し、それを「BigDecimal」に逆シリアル化しようとします。 –

関連する問題