2017-01-15 1 views
1

나는 Hbase 데이터베이스에서 작업 중이며 일반적인 SQL 쿼리를 사용하여 Hbase에 액세스하기 위해 Phoenix Apache를 사용하고 있습니다.Phoenix JDBC TImestamp 열 문제

저는 테이블에 varchar와 Date의 현재 UTC 타임 스탬프를 보유하는 두 개의 열을 가지고 있습니다. 일부 데이터를로드하고 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. phoenix 서버 시간과 hbase 서버 시간을 확인하십시오. 2. phoenix 서버와 hbase 서버 사이의 시간차가 일치 할 수 있습니다. 3. 시간대 동기화에 ntp (네트워크 시간 프로토콜)를 사용할 수 있습니다. –

+0

또한 ntp 동기화를 수행 한 후 jvms를 다시 시작하십시오. 당신은 당신이 의도하지 않은 오프셋으로 끝날 수 있습니다. 또한 hbase에서 시간을 확인할 수 있습니다. –

답변

0

대부분 클라이언트의 현지 시간대 때문일 가능성이 큽니다. official docs

타임 스탬프 형식에서

:

내부 표현은 (GMT의 시간에 기초한다)가 에포크 밀리 초의 수를 기반 반면을 java.sql.Timestamp 것 클라이언트의 로컬 시간대를 기반으로 한 형식 타임 스탬프