복붙노트

[HADOOP] HIVE에서 테이블 이름으로 사용하기 위해 현재 날짜를 가져 와서 변수로 설정하십시오.

HADOOP

HIVE에서 테이블 이름으로 사용하기 위해 현재 날짜를 가져 와서 변수로 설정하십시오.

현재 날짜를 YYMMDD로 가져 와서 테이블 이름으로 사용하기 위해 변수로 설정하고 싶습니다.

내 코드는 다음과 같습니다.

set dates= date +%Y-%m-%d;
CREATE EXTERNAL TABLE IF NOT EXISTS dates(
    id STRING,
    region STRING,
    city STRING)

그러나이 방법은 할당이 잘못 된 것 같아 작동하지 않습니다. 어떤 생각?

해결법

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

    1.하이브는 변수를 계산하지 않고 그대로 변수를 대체합니다. 귀하의 경우 정확히이 문자열 'date + % Y- % m- % d'입니다. 또한 DDL에서 테이블 이름 대신 current_date ()와 같은 UDF를 사용할 수 없습니다.

    하이브는 변수를 계산하지 않고 그대로 변수를 대체합니다. 귀하의 경우 정확히이 문자열 'date + % Y- % m- % d'입니다. 또한 DDL에서 테이블 이름 대신 current_date ()와 같은 UDF를 사용할 수 없습니다.

    해결책은 셸에서 변수를 계산하여 Hive에 전달하는 것입니다.

    껍질에서

    dates=$(date +%Y_%m_%d);
    
    hive --hivevar  date="$dates" -f myscript.hql
    

    스크립트에서 :

    use mydb; create table if not exists tab_${hivevar:date} (id int);
    

    또는 hive -e를 사용하여 명령 줄에서 하이브 스크립트를 실행할 수 있습니다.이 경우 변수를 쉘을 사용하여 대체 할 수 있습니다.

    dates=$(date +%Y_%m_%d);
    
    hive -e "use mydb; create table if not exists tab_${dates} (id int);"
    
  2. from https://stackoverflow.com/questions/53280860/get-the-current-date-and-set-it-to-variable-in-order-to-use-it-as-table-name-in by cc-by-sa and MIT license