Title

FLINK1.12的Hbase的DATE,TIME,TIMESTAMP类型学习

类型 解释
DATE 从 1970-01-01 00:00:00 UTC 开始的天数,int 值。
TIME 从 1970-01-01 00:00:00 UTC 开始天的毫秒数,int 值。
TIMESTAMP 从 1970-01-01 00:00:00 UTC 开始的毫秒数,long 值。

1.1 DATE

从上述可以看出类型DATE的底层存储为Int值,且该Int值表示从 1970-01-01 00:00:00 UTC 开始的天数。

1.1.2 当日期定义为INT时

CREATE TABLE ODS_TEST_LEW ( rowkey STRING ,f ROW<`c1` DOUBLE,`c2` DOUBLE, `c3` INT, `c4` INT>,PRIMARY KEY (rowkey) NOT ENFORCED )WITH( 'connector'  = 'hbase-1.4', 'table-name'  = 'ODS_TEST_LEW', 'null-string-literal'  = '', 'zookeeper.quorum'  = 'xxx:2181');

查询

select rowkey,c4 from ODS_TEST_LEW;

显示

rowkey c4
1002 18874
111 18895
112 18855
113 18875

1.1.3 当日期定义为DATE时

CREATE TABLE ODS_TEST_LEW ( rowkey STRING ,f ROW<`c1` DOUBLE,`c2` DOUBLE, `c3` INT, `c4` DATE>,PRIMARY KEY (rowkey) NOT ENFORCED )WITH( 'connector'  = 'hbase-1.4', 'table-name'  = 'ODS_TEST_LEW', 'null-string-literal'  = '', 'zookeeper.quorum'  = 'xxx1:2181,xxx2:2181,xxx3:2181');

查询

select rowkey,c4 from ODS_TEST_LEW;

显示

rowkey c4
1002 2021-09-04
111 2021-09-25
112 2021-08-16
113 2021-09-05

需要注意的是当Create Table语句中定义为INT或者DATE时,要按其定义的类型插入数据,即定义为INT时,插入中该字段也要是INT,当定义为DATE时,插入中该字段也要是DATE(例如cast('2021-09-01' as DATE)转成DATE)

1.2 TIME,TIMESTAMP与DATE类似

posted @ 2021-09-24 13:12  apeGcWell  阅读(831)  评论(0编辑  收藏  举报