2017-05-23 2 views
0

타임 스탬프 열에서 Apache Phoenix의 필터를 사용하려고합니다.Apache Phoenix CURRENT_TIME()에서 NPE

테이블과 열이 있습니다. 열의 유형은 TIMESTAMP입니다. 나는 또한 CURRENT_TIME과 노력 https://phoenix.apache.org/language/datatypes.html#timestamp_type

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) 

답변

0

- JIRA를 제출하시기 바랍니다. 일시적인 해결책은 METRIC_TIMESTAMP를 TIMESTAMP 대신 DATE로 선언하는 것입니다. Phoenix의 DATE 유형은 밀리 초 단위로 세분화되어 있습니다.

+0

자동 생성 된 타임 스탬프와 비슷한 문제가 있습니다. – bearrito

+0

문제를 해결하려면 sql.Date에 map 유형을 사용해야합니까? millis에 대한 입상 성을 유지합니까? – bearrito

+0

create table 문에서 METRIC_TIMESTAMP를 DATE 유형으로 선언하십시오. CREATE TABLE METRIC (...., METRIC_TIMESTAMP DATE). Phoenix는 날짜를 저장하기 위해 8 epoch long을 사용하므로 항상 밀리 초 단위입니다. 전체 세부 사항을 표시하는 SQL 클라이언트를 사용해야합니다. 예를 들어, sqlline은 DATE의 일 부분 만 표시합니다. SELECT TO_CHAR (METRIC_TIMESTAMP, 'yyyy MM dd HH : mm : ss.SSS') FROM METRIC;을 사용할 수 있습니다. –