Hbase Apache Phoenix CURRENT_TIME()提供了NPE

Hbase Apache Phoenix CURRENT_TIME()提供了NPE,hbase,phoenix,Hbase,Phoenix,我试图在时间戳列上使用ApachePhoenix的过滤器 我的表和列已存在。该列的类型为TIMESTAMP 我也试过使用CURRENT_TIME() 这是一个错误-请提交一个JIRA。解决方法是将度量_时间戳声明为日期,而不是时间戳。Phoenix中的日期类型的粒度为毫秒。可以。对于自动生成的时间戳,我也有类似的问题。为了解决这个问题,我应该使用将类型映射到sql.Date吗?这会将粒度保持为毫秒吗?在create table语句中,将METRIC_TIMESTAMP声明为DATE类型:crea

我试图在时间戳列上使用ApachePhoenix的过滤器

我的表和列已存在。该列的类型为TIMESTAMP

我也试过使用CURRENT_TIME()


这是一个错误-请提交一个JIRA。解决方法是将度量_时间戳声明为日期,而不是时间戳。Phoenix中的日期类型的粒度为毫秒。

可以。对于自动生成的时间戳,我也有类似的问题。为了解决这个问题,我应该使用将类型映射到sql.Date吗?这会将粒度保持为毫秒吗?在create table语句中,将METRIC_TIMESTAMP声明为DATE类型:create table METRIC(..,METRIC_TIMESTAMP DATE)。Phoenix使用8字节长的历元来存储日期,因此其粒度始终为毫秒。确保使用显示完整粒度的SQL客户机—例如,sqlline只显示日期的日期部分。您可以使用SELECT从公制中选择字符(公制时间戳'yyyy-MM-dd HH:MM:ss.SSS');
0: jdbc:phoenix:localhost:2181:/hbase> SELECT * FROM METRIC where METRIC_ID = 'process.cpu' AND METRIC_TIMESTAMP > NOW();
java.lang.NullPointerException
at org.apache.phoenix.compile.ScanRanges.getAscTimeRange(ScanRanges.java:674)
0: jdbc:phoenix:localhost:2181:/hbase> SELECT * FROM METRIC where METRIC_ID = 'process.cpu' AND METRIC_TIMESTAMP > CURRENT_TIME();
java.lang.NullPointerException
at org.apache.phoenix.compile.ScanRanges.getAscTimeRange(ScanRanges.java:674)
at org.apache.phoenix.compile.ScanRanges.getRowTimestampColumnRange(ScanRanges.java:658)