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)
となります。私は、自動生成されたタイムスタンプでも同様の問題があります。 – bearrito
回避策をとるには、型をsql.Dateにマップする必要がありますか? millisに細分性を維持しますか? – bearrito
create table文で、METRIC_TIMESTAMPをDATE型に宣言します。CREATE TABLE METRIC(....、METRIC_TIMESTAMP DATE)。フェニックスは日付を保存するために8エポックの長さを使用しています。したがって、常にミリ秒単位です。完全な粒度を示すSQLクライアントを使用するようにしてください。たとえば、sqllineはDATEの日部分のみを表示します。 SELECT TO_CHAR(METRIC_TIMESTAMP、 'yyyy MM dd HH:mm:ss.SSS')FROM METRIC;を使用できます。 –