Study

oozie workflow에서, argument를 입력 받은 shell script의 결과를 다음 task(Hive Query)에서 변수로 사용하기

whistory 2023. 4. 4. 13:16
반응형

 

💡 oozie에서 workflow 실행 시,
     날짜를 argument로 입력 받아 다음 task(hive query)에서 where조건의 값으로 사용해본다.

 

1. 날짜를 입력 받을 shell script를 작성한다.

#!/bin/bash

if [ -n "$1" ]; then
	echo today=$1
else
	getdt=$(date +%Y-%m-%d)
	echo today=$getdt
fi

  • 위와 같은 형식으로 echo를 찍어준다. today=${date}

 

2. hadoop 명령어를 이용해 작성한 shell script를 hadoop에 업로드한다

$ hadoop fs -copyFromLocal check_date.sh /user/hue/oozie/script/ws_test_date_return

 

 

3. workflow 에서 saved shell command 를 추가한다

 

 

3.1 테스트

argument 입력하지 않은 경우 오늘 날짜 return

argument 입력 시 입력 받은 날짜 return

 

 

4. workflow에 hive query를 등록한다.

변수는 hivevar:input 으로 지정해 줘야 한다.

로그에서 확인해 볼 수 있듯이, hivevar에 input으로 들어가기 때문에..

SELECT 
	`date`, count(1) 
FROM 
	table 
WHERE 
	`date` = "${hivevar:input}"
GROUP BY 
	`date`

 

 

 

 

5. parameter 등록

workflow 화면에서 [...] 버튼을 누르고 Workspace 화면으로 이동한다.

 

workflow.xml 파일을 연다.

 

먼저 실행한 shell script action의 today 라는 값을 input parameter로 전달한다.

 

 

UI 화면에서는 아래와 같이 작업해준다.

 

직접 입력

input=${wf:actionData(”shell-id”)[”today”]}

 

 

테스트 결과

 

 

 

반응형