복붙노트

[HADOOP] 매개 변수로 하이브에 뷰 만들기

HADOOP

매개 변수로 하이브에 뷰 만들기

다양한 날짜에 속하는 행을 포함하는 테이블이 있습니다. 날짜를 기준으로 데이터를 제공하는보기를 만들고 싶습니다.

CREATE VIEW newusers
AS
SELECT DISTINCT T1.uuid
FROM user_visit T1
WHERE T1.firstSeen="20140522";

나는 어디에서 수정하고 싶지 않습니다. T1.firstSeen = "20140522"; 20140525 등의 날짜가 될 수 있습니다. 거기에 날짜로 매개 변수로보기를 만들 수있는 방법이 있습니까?

해결법

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

    1.실제로 변수가있는 뷰를 만드는 것이 실제로 작동하는지 잘 모르겠습니다. Hive 1.2 이상에서는 테이블을 만들 때 일어나는 일입니다.

    실제로 변수가있는 뷰를 만드는 것이 실제로 작동하는지 잘 모르겠습니다. Hive 1.2 이상에서는 테이블을 만들 때 일어나는 일입니다.

    hive> create view v_t1 as select * from t_t1 where d1="${hiveconf:v_val_dt}";
    OK
    Time taken: 6.222 seconds
    hive> show create table v_t1;
    OK
    CREATE VIEW `v_t1` AS select `t_t1`.`f1`, `t_t1`.`d1` from `default`.`t_t1` where `t_t1`.`d1`="'2016-01-02'"
    Time taken: 0.202 seconds, Fetched: 1 row(s)
    

    뷰를 만들 때 항상 정적 상수 값을 사용합니다. 작동 할 수있는 한가지는 프롬프트 밖에서 머무를 것입니다.

    [hdfs@sandbox ~]$ hive -hiveconf v_val_dt=2016-01-01 -e 'select * from v_t1 where d1="${hiveconf:v_val_dt}";' 
    Logging initialized using configuration in file:/etc/hive/2.3.2.0-2950/0/hive-log4j.properties 
    OK 
    string_1    2016-01-01 
    Time taken: 7.967 seconds, Fetched: 1 row(s) 
    
    [hdfs@sandbox ~]$ hive -hiveconf v_val_dt=2016-01-06 -e 'select * from v_t1 where d1="${hiveconf:v_val_dt}";' 
    Logging initialized using configuration in file:/etc/hive/2.3.2.0-2950/0/hive-log4j.properties 
    OK 
    string_6    2016-01-06 
    Time taken: 10.967 seconds, Fetched: 1 row(s) 
    
  2. ==============================

    2.하이브 스크립트에서 날짜를 변수로 바꿉니다.

    하이브 스크립트에서 날짜를 변수로 바꿉니다.

    CREATE VIEW newusers
    AS
    SELECT DISTINCT T1.uuid
    FROM user_visit T1
    WHERE T1.firstSeen="${hiveconf:date}";
    

    그런 다음 하이브를 호출 할 때 해당 변수에 값을 지정하십시오.

    hive --hiveconf date=20140522 -f 'create_newusers_view.hql'
    

    또는 하이브 내에서 설정하십시오.

    set date=20140522;
    
  3. ==============================

    3.이 문제점에 대한 다른 접근법은 키 값 쌍을 매개 변수로 설정하는 테이블을 작성하는 것입니다. 보기에서이 테이블을 참조 할 수 있습니다.

    이 문제점에 대한 다른 접근법은 키 값 쌍을 매개 변수로 설정하는 테이블을 작성하는 것입니다. 보기에서이 테이블을 참조 할 수 있습니다.

    create table load_params (key: string, value: string);
    insert overwrite table load_params values ('firstSeen', '20140522');
    

    보기는 다음과 같이 보입니다.

    create view newusers as 
    select distinct T1.uuid
    from user_visit T1
    where T1.firstSeen = (select cast(value as int) from load_params where key = 'firstSeen');
    

    각 실행 전에 load_params 테이블을 편집 할 수 있습니다. set을 사용하여 다른 매개 변수를 설정할 때와 마찬가지입니다.

  4. from https://stackoverflow.com/questions/24059040/creating-views-in-hive-with-parameter by cc-by-sa and MIT license