0
Ich versuche, Apache Phoenix-Filter auf Timestamp-Spalte zu verwenden.Apache Phoenix CURRENT_TIME() gibt NPE
Meine Tabelle und Spalte existiert. Die Spalte ist vom Typ TIMESTAMP. 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)
ich auch mit CURRENT_TIME versucht()
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)
Wird tun. Ich habe ein ähnliches Problem für automatisch generierte Zeitstempel. – bearrito
Um die Problemumgehung zu umgehen, sollte ich den Typ zu sql.Date zuordnen? Wird das Granularität zu Millis beibehalten? – bearrito
In der Anweisung create table deklarieren Sie METRIC_TIMESTAMP als Datentyp DATE: CREATE TABLE METRIC (...., METRIC_TIMESTAMP DATE). Phoenix verwendet eine 8-Byte-Epoche, um das Datum zu speichern, so dass es sich immer um eine Granularität von Millis handelt. Stellen Sie sicher, dass Sie einen SQL-Client verwenden, der die vollständige Granularität anzeigt - beispielsweise zeigt sqline nur den Tag eines Datums an. Sie können SELECT TO_CHAR (METRIC_TIMESTAMP, 'JJJJ MM TT HH: mm: ss.SSS') FROM METRIC; –