복붙노트

[HADOOP] 어떻게 하이브에서 특정 시간대의 현재 시간을 얻을 수 있습니다

HADOOP

어떻게 하이브에서 특정 시간대의 현재 시간을 얻을 수 있습니다

나는 하이브 2 개 테이블을 가지고있다.

표 1은 포함

timelocation
2015-03-04 15:00 Chicago
2015-03-04 15:00 Denver
2015-03-04 15:00 Honolulu

표 2는 포함

ID                       Description
America/Chicago          CENTRAL STANDARD TIME                              
America/Denver           MOUNTAIN  STANDARD TIME                            
Pacific/Honolulu         HAWAII-ALEUTIAN STANDARD TIME                       

표 1의 레코드 존재가 "2015년 3월 4일 15시 시카고"라고, 나는 해당 시카고 레코드에 대해 표 2에 조회를 할 필요가있다. 그것은 시카고의 ID 및 설명을 읽고 시카고 즉 "2015년 5월 4일 9시 11분"현재 중부 표준시를 반환해야합니다.

마찬가지로 덴버 것이 산지 표준시를 반환해야합니다 및 호놀룰루 것은 하와이 - 알류 산 표준시를 반환해야합니다.

예상 출력은

timelocation
2015-05-04 09:11
2015-05-04 08:11
2015-05-04 04:11

내가 어떻게 해?

해결법

  1. ==============================

    1.난 정말 당신이 쿼리를 작성하지 않으 그러나 희망이 옳은 방향으로 당신을 가리 킵니다. 당신은 TBL1 <=> TBL2에 가입해야합니다. 각 테이블의 각 열에서 도시를 추출; 분할 () 함수를 사용하면 도움이 될 것입니다. 그런 다음 (UTC로 가정) 타임 스탬프를 받아 주어진 시간대로 변환 당신이 여기라고 from_utc_timestamp을 찾을 수있는 멋진 기능은 ()가있다. 당신은 또한 시간대 약어에 열 설명을 변환해야합니다. 당신은 여기를 찾을 수 있습니다. 행운을 빕니다!

    난 정말 당신이 쿼리를 작성하지 않으 그러나 희망이 옳은 방향으로 당신을 가리 킵니다. 당신은 TBL1 <=> TBL2에 가입해야합니다. 각 테이블의 각 열에서 도시를 추출; 분할 () 함수를 사용하면 도움이 될 것입니다. 그런 다음 (UTC로 가정) 타임 스탬프를 받아 주어진 시간대로 변환 당신이 여기라고 from_utc_timestamp을 찾을 수있는 멋진 기능은 ()가있다. 당신은 또한 시간대 약어에 열 설명을 변환해야합니다. 당신은 여기를 찾을 수 있습니다. 행운을 빕니다!

  2. ==============================

    2.당신은 표 1에 가입해야 다음과 같은 쿼리를 사용하여 표 2 :

    당신은 표 1에 가입해야 다음과 같은 쿼리를 사용하여 표 2 :

    SELECT T1.timelocation,T2.ID,  T2.Description, to_utc_timestamp(SUBSTRING(T1.timelocation,1,16),T2.ID) AS newtime
    FROM table 1 T1 INNER JOIN table2 T2 ON SUBSTRING(T1.timelocation,17)= SUBSTRING(regexp_extract(T2.ID,'/\w*',2),2) 
    

    그러므로 내가 출력에 문자열을하고있는 중이 야의 미국 / 시카고 / 시카고 될 것입니다 가정 해 봅시다에 정규식 기능의 여기 출력은 시카고를 추출하고 timelocation 컬럼의 부분 문자열에 일치합니다.

    더 하이브 정규식 기능 regexp_extract에 대한 정보 (문자열 제목, 문자열 패턴, INT 지수)를 @Hive 문서를 확인을 위해

  3. ==============================

    3.이 시도     to_utc_timestamp ( '2015년 1월 1일 0시 0분 0초', 'PST')

    이 시도     to_utc_timestamp ( '2015년 1월 1일 0시 0분 0초', 'PST')

    반환 2015년 1월 1일 8시 0분 0초

  4. from https://stackoverflow.com/questions/30032713/how-to-get-current-time-for-a-given-timezone-in-hive by cc-by-sa and MIT license