[HADOOP] HIVE에서 테이블 이름으로 사용하기 위해 현재 날짜를 가져 와서 변수로 설정하십시오.
HADOOPHIVE에서 테이블 이름으로 사용하기 위해 현재 날짜를 가져 와서 변수로 설정하십시오.
현재 날짜를 YYMMDD로 가져 와서 테이블 이름으로 사용하기 위해 변수로 설정하고 싶습니다.
내 코드는 다음과 같습니다.
set dates= date +%Y-%m-%d;
CREATE EXTERNAL TABLE IF NOT EXISTS dates(
id STRING,
region STRING,
city STRING)
그러나이 방법은 할당이 잘못 된 것 같아 작동하지 않습니다. 어떤 생각?
해결법
-
==============================
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);"
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
'HADOOP' 카테고리의 다른 글
[HADOOP] Hive 시작 오류 : java.lang.NoClassDefFoundError : org / apache / hadoop / hive / conf / HiveConf (0) | 2019.08.12 |
---|---|
[HADOOP] Hadoop에서 List 컬렉션 객체를 직렬화하는 방법은 무엇입니까? (0) | 2019.08.12 |
[HADOOP] pyspark.sql.utils.AnalysisException : u'Path가 존재하지 않습니다 (0) | 2019.08.12 |
[HADOOP] Java 응용 프로그램 내에서 Pig 실행 (0) | 2019.08.12 |
[HADOOP] Oozie Hive 액션이 멈추고 심장 박동이 영원히 (0) | 2019.08.12 |