복붙노트

[HADOOP] Hive에서 현재 unix_timestamp 가져 오기

HADOOP

Hive에서 현재 unix_timestamp 가져 오기

Hive SQL에서 현재 날짜를 선택하는 방법 게시물로서 Hive에서 현재 날짜를 가져 오기 위해 unix_timestamp를 사용할 수 있습니다.

그러나 나는 시도했다

select unix_timestamp();

그리고 그냥,

unix_timestamp();

둘 다 오류 메시지를 제공

FAILED: ParseException line 1:23 mismatched input '<EOF>' expecting FROM near ')' in from clause
FAILED: ParseException line 1:0 cannot recognize input near 'unix_timestamp' '(' ')'

각기.

Hive에서 unix_timestamp를 올바르게 사용하려면 어떻게해야합니까?

해결법

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

    1.Hive는 이중 테이블을 표시하지 않으므로 단일 행 테이블을 만들고 해당 테이블을 해당 종류의 쿼리에 사용할 수 있습니다.

    Hive는 이중 테이블을 표시하지 않으므로 단일 행 테이블을 만들고 해당 테이블을 해당 종류의 쿼리에 사용할 수 있습니다.

    그런 다음과 같은 쿼리를 실행할 수 있습니다

    select unix_timestamp() from hive_dual;
    

    해결 방법은 기존 테이블을 LIMIT 1 또는 TABLESAMPLE 절과 함께 사용하는 것이지만 테이블 크기에 따라 효율성이 떨어집니다.

    # any_existing_table contains 10 lines
    # hive_dual contains 1 line
    
    select unix_timestamp() from any_existing_table LIMIT 1; 
    # Time taken: 17.492 seconds, Fetched: 1 row(s)
    select unix_timestamp() from any_existing_table TABLESAMPLE(1 ROWS);
    # Time taken: 15.273 seconds, Fetched: 1 row(s)
    
    select unix_timestamp() from hive_dual ;
    # Time taken: 16.144 seconds, Fetched: 1 row(s)
    select unix_timestamp() from hive_dual LIMIT 1; 
    # Time taken: 14.086 seconds, Fetched: 1 row(s)
    select unix_timestamp() from hive_dual TABLESAMPLE(1 ROWS);
    # Time taken: 16.148 seconds, Fetched: 1 row(s)
    

    최신 정보

    테이블 이름과 제한 명령문을 전달할 필요가 없습니다. Hive는 이제 select unix_timestamp ()를 지원합니다.

    자세한 내용은 :

    Hive에 DUAL과 동등한 것이 있습니까?

    블로그 POST : 하이브의 이중 테이블

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

    2.타임 스탬프에서 날짜를 가져 오려면 to_date 함수를 사용하십시오.

    타임 스탬프에서 날짜를 가져 오려면 to_date 함수를 사용하십시오.

    아래를 시도하십시오

    select to_date(FROM_UNIXTIME(UNIX_TIMESTAMP())) as time from table_name;
    
  3. from https://stackoverflow.com/questions/25925330/get-current-unix-timestamp-in-hive by cc-by-sa and MIT license