decision
Definition
decision ๋
ธ๋์ ์
๋ ฅํ๋ ์กฐ๊ฑด์ ๋ฐ๋ผ N๊ฐ์ Node๋ก ์์
flow๋ฅผ ๋ถ๊ธฐ ํ ์ ์์ต๋๋ค. ์ ํ ๋
ธ๋์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์คํ๋ ํํ ๋
ธ๋๊ฐ ๋ค๋ฅผ ๊ฒฝ์ฐ ์ฌ์ฉํฉ๋๋ค.
์ข์ธก [Flow๊ตฌ์ฑ]๋
ธ๋ ์ค [decision]๋
ธ๋๋ฅผ drag & drop ํ ํ Property ํญ๋ชฉ์ ์
๋ ฅํฉ๋๋ค.
Set
[setting], [scheduler], [parameter] ์ค์ ์ [์ํฌํ๋ก์ฐ] > [์์ฑ] > [๊ธฐ๋ณธ๊ตฌ์ฑ]์ ์ฐธ๊ณ ํฉ๋๋ค.
property
[Node Description] ์์ฑ ์ค์ธ ๋ ธ๋๋ช ์ ๋ ฅ
- switch : ์กฐ๊ฑด๋ฌธ๊ณผ ์ด๋ํ action ์
๋ ฅ
- case : ์กฐ๊ฑด ์ ๋ ฅ
- to : ์กฐ๊ฑด์ ๋ฐ๋ผ ์ํํ ํ์ ๋ ธ๋ ์ ํ(์ฝค๋ณด๋ฐ์ค)
- default : ๊ธฐ๋ณธ์ผ๋ก ์ด๋ํ action
- to : ๋ ธ๋ ์ ํ
Example
HDFS์ ํน์ ํ์ผ ์ ์ฅ์ฌ๋ถ๋ฅผ ์ฒดํฌํ์ฌ ํ์ผ์ด ์์ ๊ฒฝ์ฐ "fileexist_yes", ์์ ๊ฒฝ์ฐ "no_files"๋ผ๋ 0byte ํ์ผ์ ์์ฑํฉ๋๋ค. ETL ์ํ๊ฒฐ๊ณผ๊ฐ ์ ์์ ์ผ๋ก ์์ฑ๋์๋์ง ํ์ธํ๋ ๊ฒ์ฆ๋ก์ง ๋ฑ์ผ๋ก ์์ฉํ ์ ์์ต๋๋ค.
- kbtest ํด๋ฌ์คํฐ์ ๊ฒ์ฌ๋์ ํ์ผ์ ์ ์ฌ (/tmp/test-ods/AIR_HOUR_2019_2.csv)
- [decision] ๋ฐ [fs] ๋ ธ๋๋ฅผ ์์ฑ
- [decision] ๋
ธ๋๋ฅผ ์๋์ ๊ฐ์ด ์ค์
- ๊ฒฝ๋ก์ ํ์ผ์ด ์์ ๊ฒฝ์ฐ [fs_fileexist]๋ก ์ด๋
- case : ${fs:exists(("/tmp/test-ods/AIR_HOUR_2019_2.csv")) == "true"}
- to : fs_fileexist
- ๊ฒฝ๋ก์ ํ์ผ์ด ์์ ๊ฒฝ์ฐ [fs_nofiles]๋ก ์ด๋
- case : ${fs:exists(("/tmp/test-ods/AIR_HOUR_2019_2.csv")) == "false"}
- to : fs_nofiles
- ๊ฒฝ๋ก์ ํ์ผ์ด ์์ ๊ฒฝ์ฐ [fs_fileexist]๋ก ์ด๋
[Note] : oozie el function
case ์ ๋ ฅ ๊ตฌ๋ฌธ์ oozie el function ์ผ๋ก ์ธ๋ถ ์ฌํญ์ ์๋ ์ฌ์ดํธ ์ฐธ๊ณ https://oozie.apache.org/docs/4.3.0/WorkflowFunctionalSpec.html#a4.2.2_Basic_EL_Functions
[fs]๋ ธ๋(fs_fileexist, fs_nofiles)๋ฅผ ์๋์ ๊ฐ์ด ์ค์
- fs_fileexist : property "5.touchz" > HDFS File Browser์์ "hdfs://kbtest-accu-hdfs-nn.suka:9000/tmp/test-ods"๊ฒฝ๋ก ์ค์ ํ "/fileexist.yes" ์ ๋ ฅ
- fs_nofiles : property "5.touchz" > HDFS File Browser์์ "hdfs://kbtest-accu-hdfs-nn.suka:9000/tmp/test-ods"๊ฒฝ๋ก ์ค์ ํ "/no_files" ์ ๋ ฅ
์คํ๊ฒฐ๊ณผ
- ๋ฐ์ดํฐ๊ฐ ์์ ๊ฒฝ์ฐ ์ง์ ํ ๊ฒฝ๋ก์ fileexist.yes ์์ฑ ํ์ธ
- ๋ฐ์ดํฐ๊ฐ ์์ ๊ฒฝ์ฐ ์ง์ ํ ๊ฒฝ๋ก์ no_files ์์ฑ ํ์ธ