2017-01-15 8 views
1

私はHbaseデータベースで作業していて、通常のSQLクエリを使用してHbaseにアクセスするためにApache Phoenixを使用しています。Phoenix JDBC TImestampカラムの問題

私は、varcharとDateに現在のUTCタイムスタンプを保持する2つのカラムをテーブルに持っています。いくつかのデータを読み込んだ後、私がHbaseに問い合わせると、Date型のイベントタイムスタンプカラムのために奇妙な結果が出ます。二つの値以上

Event UTC (Date) :2017-01-13 16:36:59.0 
Event UTC (varchar):2017-01-13 21:36:59 

正確に5時間の後ろの私に間違った結果すなわちを与えるイベントUTC(日)列をバック問い合わせるときに同一であるが、各レコードのためにする必要があります。 私はこの問題がどこから来るのか分かりません。私はTimezone情報を保存していません。Java UtilまたはSQLタイムスタンプにはタイムゾーン情報が保存されていませんが、クエリ実行時に結果セットデータと混同します。この問題を解決するのに私を助けてください

+1

1.フェニックスサーバーの時刻とhbaseサーバーの時刻を確認します。 2.フェニックスサーバーとhbaseサーバーの間の時間の不一致の可能性があります 3.タイムゾーンを同期するためにntp(ネットワークタイムプロトコル)を使用できます。 –

+0

ntp同期を実行した後もjvmsを再起動します。あなたはあなたが意図していないオフセットで終わることができます。また、hbaseで時刻を確認することもできます –

答えて

0

おそらく、クライアントのローカルタイムゾーンのためです。

official docs

タイムスタンプタイプから:

たjava.sql.Timestampになるが内部表現は、(GMTの時間に基づいている)エポックからのミリ秒数に基づいていますクライアントのローカルタイムゾーンに基づいたフォーマットタイムスタンプ。