Integer
[ 0,2147483647]
binary表示是4个byte的整型。这个类型主要用作序列化映射到已经存在Hbase表的数据,适配HBase Bytes.toBytes(int)方法。
BIGINT
[-9223372036854775808 ,9223372036854775807]
binary表示是8位byte的Long类型, 符号位被翻转(为了让负数排在正数前面)
UNSIGNED_LONG
[0 ,9223372036854775807]
binary表示是8位byte的Long类型。这个类型主要用作序列化映射到已经存在Hbase表的数据,适配HBase Bytes.toBytes(long)方法。
TINYINT
[-128,127]
binary表示是单个byte,为了排序符号位被翻转。
UNSIGNED_TINYINT
[0,127]
binary表示是单个byte。这个类型主要用作序列化映射到已经存在Hbase表的数据,适配 HBase Bytes.toBytes(byte)方法。
SMALLINT
Short
[-32768,32767]
binary表示是两个byte,为了排序符号位被翻转。
UNSIGNED_SMALLINT
Short
[0,32767]
binary表示是两个byte。这个类型主要用作序列化映射到已经存在Hbase表的数据,适配HBase Bytes.toBytes(short)方法。
FLOAT
Float
[-3.402823466 E + 38,3.402823466 E + 38]
binary表示是四个byte, 为了排序符号位被翻转。
UNSIGNED_FLOAT
Float
[0,3.402823466 E + 38]
binary表示是四个byte。这个类型主要用作序列化映射到已经存在Hbase表的数据,适配HBase Bytes.toBytes(float)方法。
DOUBLE
DOUBLE
[-1.7976931348623158 E + 308,1.7976931348623158 E + 308]
binary表示是8个byte,为了排序符号位被翻转。
UNSIGNED_DOUBLE
DOUBLE
[0,1.7976931348623158 E + 308]
binary表示是8个byte。这个类型主要用作序列化映射到已经存在Hbase表的数据,适配HBase Bytes.toBytes(double)方法。
DECIMAL(precision,scale)
BigDecimal
最大精度38位
binary是可比较的边长格式。如果用于rowkey。 当它不是最后一列时,比较终结符号是null byte
BOOLEAN
BOOLEAN
binary表示0是flase, 1是true
java.sql.Time
格式: yyyy-MM-dd hh:mm:ss
二进制表示是8位byte的long类型数据, 数据内容是客户端时区自1970-01-01 00:00:00 UTC到现在的毫秒大小(GMT)。此类型与 SQL 92中的Time类型不兼容
java.sql.Date
格式: yyyy-MM-dd hh:mm:ss
二进制表示是8位byte的long类型数据, 数据内容是客户端时区自1970-01-01 00:00:00 UTC到现在的毫秒大小(GMT)。此类型与 SQL 92中的DATE类型不兼容。
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)。
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)方法。
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)方法。
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)方法。
VARCHAR(precisionInt)
java.lang.String
变长,可选最大长度
对应UTF-8字符通过HBase Bytes.toBytes(String)转换的二进制。如果用于rowkey。 当它不是最后一列时,比较终结符号是null byte
CHAR ( precisionInt )
java.lang.String
对应UTF-8字符通过HBase Bytes.toBytes(String)转换的二进制。
BINARY ( precisionInt )
byte[]
定长byte数组
VARBINARY
byte[]
变长byte数组
ARRAY [dimension]
java.sql.Array
Java原始类型数组,只支持一维数组。例如:VARCHAR ARRAY, CHAR(10) ARRAY [5],INTEGER [],INTEGER [100]
1.本文主要说一下怎么把hbase中的表映射到hive中,说之前我们先简单说一下hive的内部表和外部表的区别;
(1),被external关键字修饰的表是外部表,没有被external关键字修饰的表是内部表.
(2),内部表数据由Hive自身管理,外部表数据由HDFS管理.
(3),内部表数据存储的位置是hive.metastore.warehouse.dir.外部表数据的存储位置由自己确定.
(4),删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;
MaxCompute中Struct复杂数据类型的UDF编写、兼容HIVE的GenericUDF编写
MaxCompute 2.0版本升级后,Java UDF支持的数据类型从原来的BIGINT、STRING、DOUBLE、BOOLEAN扩展了更多基本的数据类型,同时还扩展支持了ARRAY、MAP、STRUCT等复杂类型,以及Writable参数。
[Phoenix] 八、动态列
传统关系型数据库的动态列实现只能依赖逻辑层的设计实现,而Phoenix是HBase上的SQL层,借助HBase特性实现的动态列功能,具有高度的灵活性,告别业务逻辑层的复杂设计。