[HADOOP] 매개 변수로 하이브에 뷰 만들기
HADOOP매개 변수로 하이브에 뷰 만들기
다양한 날짜에 속하는 행을 포함하는 테이블이 있습니다. 날짜를 기준으로 데이터를 제공하는보기를 만들고 싶습니다.
CREATE VIEW newusers
AS
SELECT DISTINCT T1.uuid
FROM user_visit T1
WHERE T1.firstSeen="20140522";
나는 어디에서 수정하고 싶지 않습니다. T1.firstSeen = "20140522"; 20140525 등의 날짜가 될 수 있습니다. 거기에 날짜로 매개 변수로보기를 만들 수있는 방법이 있습니까?
해결법
-
==============================
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.하이브 스크립트에서 날짜를 변수로 바꿉니다.
하이브 스크립트에서 날짜를 변수로 바꿉니다.
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.이 문제점에 대한 다른 접근법은 키 값 쌍을 매개 변수로 설정하는 테이블을 작성하는 것입니다. 보기에서이 테이블을 참조 할 수 있습니다.
이 문제점에 대한 다른 접근법은 키 값 쌍을 매개 변수로 설정하는 테이블을 작성하는 것입니다. 보기에서이 테이블을 참조 할 수 있습니다.
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을 사용하여 다른 매개 변수를 설정할 때와 마찬가지입니다.
from https://stackoverflow.com/questions/24059040/creating-views-in-hive-with-parameter by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Kerberos를 사용한 Hadoop 웹 인증 (0) | 2019.06.19 |
---|---|
[HADOOP] Apache Mahout의 벡터화 (0) | 2019.06.19 |
[HADOOP] Hadoop 2.6.0 : 설치 후 기본 오류 "MRAppMaster 시작" (0) | 2019.06.19 |
[HADOOP] 2017 년 OS X에서 소스에서 Apache Hadoop 빌드 (0) | 2019.06.19 |
[HADOOP] Hadoop 에코 시스템 용 호스트 파일을 구성하는 방법 (0) | 2019.06.19 |