Study

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

whistory 2023. 4. 5. 10:50
반응형

 

💡 oozie workflow에서,
    main workflow에서 sub worfklow 실행 시 하위task인 sub workflow로 변수를 보내준다.

 

 

 

 

 

shell script는

from - to 날짜를 입력 받고, argument가 없으면 오늘 날짜를 return해주는 shell script이다.

#!/bin/bash

regex="[0-9]{4}-[0-9]{2}-[0-9]{2}"

if [ -n "$1" ]; then
	if [[ $1 =~ $regex ]]: then
			if [[ $2 =~ $regex ]]: then
				fromInt=$(echo $1 | sed 's/-//g')
				fromInt=$(echo $2 | sed 's/-//g')
				if [ $(($fromInt < $toint)) == 1 ] || [ $(($fromInt < $toint)) == 1 ]; then
					echo from=$1
					echo to=$2
				else
					echo from=ERR
					echo to=start_value_i_greater_than_end_value
				fi
			else
				echo from=ERR
				echo to=second_argument_err
			fi
		else
			echo from=$1
			echo to=$2
		fi
	else
			echo from=ERR
			echo to=first_arggument_err
	fi
else
	getdt=$(date +%Y-%m-%d)
	echo from=$getdt
	echo to=$getdt
fi

 

 

 

 

 

에러가 없을 경우

위와 같은 결과를 가져온다.

분기 문에,

resultCode가 OK이면, sub workflow로 이동하도록 한다.

${wf:actionData("shell-id")["reseultCode"] eq 'OK'}

 

 

 

sub-workflow에서는, 상단 shell script의 action Data를, 변수로 넣어준다.

 

 

${wf:actionData("shell-id")["from"]}
${wf:actionData("shell-id")["to"]}

sub workflow 에서의 변수는 아래와 같이 간단히 사용한다.

 

 

 

 

 

Hive Query에서는 hivevar를 이용해 쿼리문을 저장한다.

 

 

 

 

 

 

sub workflow의 hive query 결과가 아래와 같이, main workflow에서 전달 받은 argument들로 return 된 것을 확인 할 수 있다.

 

 

 

반응형