2017-01-24 3 views
2

하이브의 타임 스탬프로 datefeild를 from_unixtime(unix_timestamp(), 'yyyy-MM-dd HH:mm:ss') as timestamp) as column_name,으로 캐스팅합니다. impala 시간을 통해 쿼리하면 GMT 형식으로 표시됩니다. 모든 타임 스탬프 필드를 만든 열뿐만 아니라 GMT 형식으로 변환 중입니다.임팔라는 GMT로 시간을 GMT로 변환하고 있습니다.

시간을 그대로 표시하는 방법은? 또는 어떻게 그것을 est로 변환 할 수 있습니까?

SQL 쿼리 또는 스파크/스칼라 코드를 사용하여 도움을 받으십시오.이 How to convert a Date String from UTC to Specific TimeZone in HIVE?을 사용해 보았을 때 도움이되었습니다.

답변

0

시도해 보셨습니까?

SELECT from_utc_timestamp(from_unixtime(unix_timestamp(), 'yyyy-MM-dd HH:mm:ss'), 'GMT-4') as column_name; 

날짜를 EST 시간대로 변환해야합니다. 데이터를 읽는 대신 타임 시스템

Impala timestamps don't match Hive - a timezone issue?

Regaards를 사용할 경우 또한, 마루 날짜 형식에 관한 문제를 배려!

+0

나는이 작업을 시도했지만, 읽기는 가능하지만 쓰기는 할 수 없다는 것을 알고있다. 고맙습니다. – Rob

1

시간을 UTC + 00 : 00으로 변환하는 임팔라가 아니라 하이브 (Hive)이지만 타임 스탬프를 마루 칸에 저장하는 경우에만 해당됩니다. 이것은 Hive의 버그입니다 : HIVE-12767. 파켓 파일에서 타임 스탬프를 읽을 때 Hive는 올바른 값을 얻기 위해 역방향 조정을 수행하지만 임팔라는 그렇지 않습니다.

임팔라 설명서의 TIMESTAMP Data Type 페이지에 따르면 -convert_legacy_hive_parquet_utc_timestamps=true은 임팔라에게 하이브와 동일한 역방향 조정을 수행하지만 성능상의 오버 헤드가 있습니다.

임팔라로 타임 스탬프를 작성하고 하이브로 다시 읽으면 하이브는 임팔라가 작성한 데이터이므로 조정이 필요하지 않으므로 임팔라가 작성한 타임 스탬프가 하이브에 올바르게 표시됩니다.

+0

하이브 컨텍스트의 스파크 코드에서 사용할 수있게되었습니다. 감사합니다 – Rob

+0

'convert_legacy_hive_parquet_utc_timestamps'는 임팔라 옵션입니다. 스파크 나 하이브에서 사용할 수있는 것이 아닙니다. – Zoltan

+0

Zoltan이 무슨 뜻인지 알 수 있습니다. 하이브 컨텍스트를 사용하여 데이터를 테이블에로드하고 있습니다. 결국 사용자가 imapala의 데이터를 쿼리하기 때문에 업데이트를 반영하기 위해 임 팔라의 메타 데이터를 무효화합니다. 내가 준 매개 변수를 사용할 수있는 가능성이 없습니다. – Rob