[Phoenix文檔係列] 二、數據類型
目前Phoenix支持22種簡單數據類型和1個一維Array的複雜類型。以下是對支持數據類型的說明。
序號 | 類型名 | 對應的java類型 | 取值範圍 | 說明 |
---|---|---|---|---|
1 | INTEGER | INTEGER | [-2147483648, 2147483647] | binary表示是4個byte的整數, 符號位被翻轉(為了讓負數排在正數前麵) |
2 | UNSIGNED_INT | Integer | [ 0,2147483647] | binary表示是4個byte的整型。這個類型主要用作序列化映射到已經存在Hbase表的數據,適配HBase Bytes.toBytes(int)方法。 |
3 | TINYINT | Byte | [-128,127] | binary表示是單個byte,為了排序符號位被翻轉。 |
4 | UNSIGNED_TINYINT | Byte | [0,127] | binary表示是單個byte。這個類型主要用作序列化映射到已經存在Hbase表的數據,適配 HBase Bytes.toBytes(byte)方法。 |
5 | SMALLINT | Short | [-32768,32767] | binary表示是兩個byte,為了排序符號位被翻轉。 |
6 | UNSIGNED_SMALLINT | Short | [0,32767] | binary表示是兩個byte。這個類型主要用作序列化映射到已經存在Hbase表的數據,適配HBase Bytes.toBytes(short)方法。 |
7 | FLOAT | Float | [-3.402823466 E + 38,3.402823466 E + 38] | binary表示是四個byte, 為了排序符號位被翻轉。 |
8 | UNSIGNED_FLOAT | Float | [0,3.402823466 E + 38] | binary表示是四個byte。這個類型主要用作序列化映射到已經存在Hbase表的數據,適配HBase Bytes.toBytes(float)方法。 |
9 | DOUBLE | DOUBLE | [-1.7976931348623158 E + 308,1.7976931348623158 E + 308] | binary表示是8個byte,為了排序符號位被翻轉。 |
10 | UNSIGNED_DOUBLE | DOUBLE | [0,1.7976931348623158 E + 308] | binary表示是8個byte。這個類型主要用作序列化映射到已經存在Hbase表的數據,適配HBase Bytes.toBytes(double)方法。 |
11 | DECIMAL(precision,scale) | BigDecimal | 最大精度38位 | binary是可比較的邊長格式。如果用於rowkey。 當它不是最後一列時,比較終結符號是null byte |
12 | BOOLEAN | BOOLEAN | 0或1 | binary表示0是flase, 1是true |
13 | TIME | java.sql.Time | 格式: yyyy-MM-dd hh:mm:ss | 二進製表示是8位byte的long類型數據, 數據內容是客戶端時區自1970-01-01 00:00:00 UTC到現在的毫秒大小(GMT)。此類型與 SQL 92中的Time類型不兼容 |
14 | DATE | java.sql.Date | 格式: yyyy-MM-dd hh:mm:ss | 二進製表示是8位byte的long類型數據, 數據內容是客戶端時區自1970-01-01 00:00:00 UTC到現在的毫秒大小(GMT)。此類型與 SQL 92中的DATE類型不兼容。 |
15 | TIMESTAMP | java.sql.Timestamp | 格式:yyyy-MM-dd hh:mm:ss[.nnnnnnnnn] | 二進製表示是8位byte的long類型和4位整型納秒。8位byte的long類型數據是客戶端時區自1970-01-01 00:00:00 UTC到現在的毫秒大小(GMT)。 |
16 | UNSIGNED_TIME | java.sql.Time | 格式: yyyy-MM-dd hh:mm:ss | 二進製表示是8位byte的long類型數據, 數據內容是客戶端時區自1970-01-01 00:00:00 UTC到現在的毫秒大小(GMT)。這個類型主要用作序列化映射到已經存在Hbase表的數據,適配HBase Bytes.toBytes(long)方法。 |
17 | UNSIGNED_DATE | java.sql.Date | 格式: yyyy-MM-dd hh:mm:ss | 二進製表示是8位byte的long類型數據, 數據內容是客戶端時區自1970-01-01 00:00:00 UTC到現在的毫秒大小(GMT)。這個類型主要用作序列化映射到已經存在Hbase表的數據,適配HBase Bytes.toBytes(long)方法。 |
18 | UNSIGNED_TIMESTAMP | java.sql.Timestamp | 格式:yyyy-MM-dd hh:mm:ss[.nnnnnnnnn] | 二進製表示是8位byte的long類型和4位整型納秒。8位byte的long類型數據是客戶端時區自1970-01-01 00:00:00 UTC到現在的毫秒大小(GMT)。這個類型主要用作序列化映射到已經存在Hbase表的數據,適配HBase Bytes.toBytes(long)方法。 |
19 | VARCHAR(precisionInt) | java.lang.String | 變長,可選最大長度 | 對應UTF-8字符通過HBase Bytes.toBytes(String)轉換的二進製。如果用於rowkey。 當它不是最後一列時,比較終結符號是null byte |
20 | CHAR ( precisionInt ) | java.lang.String | 定長 | 對應UTF-8字符通過HBase Bytes.toBytes(String)轉換的二進製。 |
21 | BINARY ( precisionInt ) | byte[] | 定長 | 定長byte數組 |
22 | VARBINARY | byte[] | 變長 | 變長byte數組 |
23 | ARRAY [dimension] | java.sql.Array | - | Java原始類型數組,隻支持一維數組。例如:VARCHAR ARRAY, CHAR(10) ARRAY [5],INTEGER [],INTEGER [100] |
最後更新:2017-11-16 14:34:21