변수 값을 문자열로 연결하는 데 문제가 있습니다. 내 스크립트는 위의 아래하이브 변수 연결
set hivevar:tab_dt= substr(date_sub(current_date,1),1,10);
CREATE TABLE default.udr_lt_bc_${hivevar:tab_dt}
(
trans_id double
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";
을 포함, 변수 tab_dt는 yyyymmdd 형식에서 어제 날짜가 제대로 할당됩니다. 하지만 테이블 이름에서이 변수를 정적 문자열로 연결하려고하면 스크립트가 실패합니다. 연결을 수행하지 않습니다. 친절하게 해결책을 제공하십시오.
참고 : 나도
set hivevar:tab_dt= substr(date_sub(current_date,1),1,10);
set hivevar:tab_nm1= default.udr_lt_bc_;
set hivevar:tab_name= concat(${hivevar:tab_dt},${hivevar:tab_nm1})
CREATE TABLE ${hivevar:tab_name}
(
trans_id double
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";
이 너무 에러를 반환 밖으로 erroring되는, 아래에 너무 했어요.
자세한 코멘트를 남겨 주셔서 감사합니다. – Sandeep
자세한 코멘트를 남겨 주셔서 감사합니다. 그것을 발견 매우 도움이. 사실 쉘 스크립트에서 시도해 보았고 명령 행에서 sh 파일을 실행할 때 잘 작동했습니다. 그러나 oozie 워크 플로에서 같은 파일을 호출하면 sh 파일의 하이브 섹션이 실행되고 있지 않습니다. 내 하이브 쿼리는 당신이 언급 한 것과 정확히 유사합니다. 쉘 스크립트에서 변수를 할당 한 다음 하이브 - hivevar table_name = "$ table_name"-f your_script.hql과 동일한 스크립트에서 하이브를 호출합니다. 그런 다음이 .sh 파일을 oozie의 쉘 조치로 실행합니다. 왜 이런 일이 일어 났는지 알아? – Sandeep
@Sandeep 스크립트와 설정으로 한 가지 더 질문을 올리시기 바랍니다. – leftjoin