์๋ ํ์ธ์.
๋ฐ์ดํฐ & AI ๋ถ์ผ์์ ์ผํ๊ณ ์๋ 15๋ ์ฐจ ํ์ง์์ ๋๋ค.
์ ๋ณด๊ด๋ฆฌ๊ธฐ์ ์ฌ๋ฅผ ์ทจ๋ํ ์ดํ ์ง๊ธ๊น์ง ์ป์ ์ง์์ ๋ง์ ์ฌ๋๋ค์๊ฒ ๊ณต์ ํ๊ณ ์ ์ปจํ ์ธ ์ ์ํ๊ณ ์์ต๋๋ค.
๋ฐ๊ฐ์ต๋๋ค. :)
Contact: hjkim_sun@naver.com
Courses
Reviews
- Airflow Master Class
- Airflow Master Class
Posts
Q&A
ch4_3 apache zookeeper ์ค์นํ์ผ ๊ด๋ จ ์ง๋ฌธ
์๋ ํ์ธ์ ๊ตฌ๋ณธ์ฑ๋ ์ฐ์ ์๊ฐ ์ค ๋ถํธ์ ๋๋ ค ์ฃ์กํฉ๋๋ค.zookeeper 3.8.4 ๋ฒ์ ์ด old ๋ฒ์ ์ด ๋๋ฉด์ ๋ค์ด๋ก๋ ๋ฐ๋ url์ด ๋ฌ๋ผ์ก์ต๋๋ค. public-nat ์๋ฒ์์ ๋ค์ด๋ก๋ ๋ฐ์ ๋ ์๋ ๊ฒฝ๋ก๋ฅผ ํตํด์ ๋ฐ์ผ์๊ฒ ์ด์? curl -O https://archive.apache.org/dist/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz์ด๋ฆ์ ๋๊ฐ์ผ๋ ๋ค์ด๋ก๋๋ง ์ ๋๋ฉด ansible playbook ์ํํ๋๊ฑด ์ด์์์ด ์ ๋ ๊ฑฐ์์!์์ ๋ URL ๊ฒฝ๋ก๋ก ์๋ฃ๋ ์์ ํด๋์๊ป์. ๊ฐ์ฌํฉ๋๋ค ๐
- 0
- 3
- 17
Q&A
Bash Operator ์ธ๋ถ ์ํ์ผ ์ํํ๊ธฐ ์ค๋ฅ
์๋ ํ์ธ์ pppcent ๋ ์ฐ์ docker-compose.yaml ์ค์ ์ ์ ๋ผ์๋ ๊ฒ ๊ฐ์์.๊ทธ๋ผ์๋ ์๋๋ค๋ฉด ์ปจํ ์ด๋ ๋ด๋ถ๋ก ๋ค์ด๊ฐ์ ํด๋น ํ์ผ์ด ์๋์ง๋ถํฐ ์ฐ์ ํ์ธํด๋ณผ ํ์๊ฐ ์์ต๋๋ค. ์์ปค ์ปจํ ์ด๋๋ฅผ ํ์ธํ ํ ์ปจํ ์ด๋ ๋ด๋ถ๋ก ์ง์ ํด์ /opt/airflow/plugins ๋๋ ํ ๋ฆฌ ๋ฐ ๊ทธ ๋ด๋ถ์ select_fruit.sh ํ์ผ์ด ์กด์ฌํ๋์ง๋ถํฐ ํ์ธํด๋ด์ผ ํด์. (์๋ ๋ช ๋ น์ผ๋ก ์ง์ )sudo docker ps sudo docker exec -it {worker์ปจํ ์ด๋} /bin/bash ์ปจํ ์ด๋ ๋ด๋ถ์ ํด๋น ํ์ผ์ด ์กด์ฌํ๋์ง๋ถํฐ ํ์ธํด๋ณด์๊ฒ ์ด์? ๋ง์ฝ ์๋ค๋ฉด docker-compose.yaml์ด ์ ๋๋ก ์ธ์๋์ง ์์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
- 0
- 3
- 17
Q&A
์ค์น ๋ฒ์ ๊ด๋ จ ์ง๋ฌธ์ ๋๋ค.
์๋ ํ์ธ์ ์ด์ ์ฑ๋!๋ก์ปฌPC์์ python3.9 & Airflow 3.0.4 ๋ฒ์ ์ผ๋ก ์ค์นํ๋ค๋ ๋ง์์ด์์ฃ ?Airflow 3.0.4 ๋ฒ์ ๊ณผ 3.1 ๋ฒ์ ๊ฐ ์ฐจ์ด๋ฅผ ์ ๊ฐ 100% ์์ง๋ ๋ชปํ์ง๋ง ์๋ง๋ ์ค์ตํ๋๋ฐ ๋ฌธ์ ๋ ์์๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ๊ทธ๋๋ ํน์ ๋ฒ์ ์ ๋ง์ถ๊ณ ์ถ๋ค๋ฉด ๋ก์ปฌ ํ๊ฒฝ์ชฝ ํ์ด์ฌ ๊ฐ์ํ๊ฒฝ์ 3.12๋ก ์ค์นํ์๊ณ ๊ฐ์ํ๊ฒฝ ๋ง๋ ๋ค์์ pip install "apache-airflow[celery]==3.1.3" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-3.1.3/constraints-3.12.txt"์ด๋ ๊ฒ ๋ค์ ์ค์นํด๋ณด์๊ฒ ์ด์? ์ฐธ๊ณ ๋ก ์ง๊ธ airflow ์ปจํ ์ด๋๋ก ์ค์นํ๋ฉด ํ์ด์ฌ ๋ฒ์ ์ด 3.12๋ก ์ค์น๋ฉ๋๋ค. ๊ทธ๋์ ๋ก์ปฌ์ python ๋ฒ์ ๋ 3.12๋ก ๋ง์ถฐ์ฃผ์๊ณ ์์ ์๋ ค๋๋ฆฐ๋๋ก ์ค์นํด์ฃผ์๋ฉด ํ์ด์ฌ 3.12 ๊ธฐ์ค์ผ๋ก airlfow 3.1.3 ์ค์น๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- 0
- 1
- 14
Q&A
์ฐ๋ถํฌ ๋ฒ์ ๋ค์ด๋ฐ์์ผํ๋๋ฐ ์ด๋ค๊ฑธ๋ก ์ค์นํด์ผํ ๊น์?
์๋ ํ์ธ์ Rootree๋Ubuntu-24.04 ๋ก ์ค์นํ์๋ฉด ๋ฉ๋๋ค!
- 0
- 1
- 18
Q&A
DAG ๋ง๋ค๊ธฐ ์ค airflow ํจํค์ง ๋ก๋ ์๋ฌ
์๋ ํ์ธ์ abc๋ ์ฃผ๋ก pip install ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นํ๋๋ฐ IDE ํด์์ ์ฌ์ ํ ์ธ์์ด ์๋๋ค๋ฉด ํ์ด์ฌ ๊ฐ์ํ๊ฒฝ์ด ์ ์์กํ์ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์ต๋๋ค.ํ์ฌ ํ์์ ํ์ธํด์ผํ๋, ์ฐ์ vscode ์ ์ฒด ํ๋ฉด์ ์บก์ณํด์ ์ฌ๋ ค์ฃผ์ค๋์? ํ๋จ ์ค๋ฅธ์ชฝ์ ๋ณด์๋ฉด ํ์ฌ ์ด๋ค ๊ฐ์ํ๊ฒฝ์์ ์์ ํ์๋์ง ๋ณด์ ๋๋ค. ์ฌ๊ธฐ๋ ๊ฐ์ํ๊ฒฝ์ธ๋ฐ pip install์ ๊ธ๋ก๋ฒ ํ๊ฒฝ์์ ํ๋ค๋๊ฐ, ์๋๋ฉด ๋ฐ๋๋ก ํ์ จ์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.์๋ฌดํผ ์ฌ๋ฐ๋ฅธ ๊ฐ์ํ๊ฒฝ์์ ์์ ํ์ จ๋์ง๊ฐ ์ค์ํ๋, vscode ์ ์ฒด ํ๋ฉด ์บก์ณํด์ ์ฌ๋ ค์ฃผ์ธ์! ๊ทธ๋ฆฌ๊ณ UnauthorizedAccess ์๋ฌ ๋จ๋๊ฒ๋ ์ ์ฒด ์บก์ณํด์ ์ฌ๋ ค์ฃผ์๊ฒ ์ด์? ์ ๊ฐ ๋งฅ๋ถ์์๋ง ์ฃผ๋ก ์์ ํด์ powershell ์๋ฌ ๋ด์ฉ์ ํ๋ฒ ๋ด์ผ ์ ๊ฒ ๊ฐ์์ ^^ ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 48
Q&A
์ง๋ฌธ์์ต๋๋ค ์น์ 13. Spark streaming ๋ถ๋ถ
์๋ ํ์ธ์, ์ ์ ํ๋์ฐ์ ๋ก๊ทธ ์ค์ ์ ์ ์ ํ๋์ฒ๋ผ ๋์ค๋๊ฒ ๋ง์ต๋๋ค. ํน์ ๋ชฐ๋ผ ์ ๋ EC2๋ถํฐ ์ฌ๊ตฌ์ฑํด์ ๋ค์ ํด๋ดค๋๋ฐ ์ฌ๋ ค์ฃผ์ ๊ฒ์ฒ๋ผ ๋์ค๋๋ผ๊ตฌ์. ansible-playbooks/ch9_4/setting_spark-on-yarn.yaml ํ์ผ์ ๋ณด๋ฉด ์๋์ ๊ฐ์ด ๋ก๊ทธ ๋ด์ฉ์ ์ ํ ํ๋ ๊ตฌ๋ฌธ์ด ์์ต๋๋ค. (์ฌ์ง) ๋ก๊ทธ ์ค์ ํ์ผ์ธ log4j2.properties ๋ฅผ ๋ง๋๋ ๋ด์ฉ์ธ๋ฐ ์ด ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ ๊ตฌ๋ฌธ์ด ๋ค์ด๊ฐ์์ต๋๋ค. appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n%ex๊ทธ๋์ ์ฐ์์ผ ์:๋ถ:์ด {log_level} {ํด๋์ค๋ช }: ์๋ฌ๋ด์ฉ ์ด๋ ๊ฒ ๋์ค๊ฒ๋ ๋์ด์์ด์. ์๋ง๋ ์ ๊ฐ ๋ นํํ ๋น์ ์ด ๋ด์ฉ์ด ์ ๋ค์ด๊ฐ์์์ ํ๋ฅ ์ด ๋์๋ฐ, ์คํ๋ ค ์ ์ ํ๋์ฒ๋ผ ๋์ค๋๊ฒ ๋ง๋ ์ค์ ์ด๋ผ ๊ฑฑ์ ํ์ง ์์ผ์ ๋ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ spark-submit ํ์ ๋ ์คํ๋๋ ์๋๋ ์ข ๋๋ฆฐ๊ฒ ๋ง์ต๋๋ค. ํธ์งํ๋ฉด์ ์ ๊ฐ ๋ก๋ฉ์ด ๋๋ฆฐ๋ถ๋ถ์ ๋ชจ๋ ์ปท ํธ์ง์ ํ์ด์. ๊ทธ๋์ ์์ ๋ณด์๊ธฐ์๋ ๋นจ๋ฆฌ ๋์ค๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋๊ฒ ๋ง๊ณ ์ ๊ฐ EC2 ์ฌ๊ตฌ์ฑํด์ simple_pyspark.py ๋๋ ค๋ดค๋๋ฐ ์์๋๊ธฐ๊น์ง 34์ด ๊ฑธ๋ฆฌ๋๋ผ๊ตฌ์. ์ ๊ฐ ๋ นํํ์ ๋๋ ์ด์ ๋ ๊ฑธ๋ ธ์ผ๋ ์๋ง ์ ํ๋๊ป์ ๋๋ผ์๋ ์๋๊ฐ ๋ง์๊ฒ๋๋ค. ์ ๊ฐ ํ๋ก์ ํธํ์ ๋ ์ด์ํ๊ฒฝ์ ์๋ฒ ์์์ด ์ถฉ๋ถํ์๋๋ฐ ์ค์ตํ๊ฒฝ๋ณด๋ค๋ ํจ์ฌ ๋นจ๋์ด์. ์๋ง ์์์ด ๋๋์น ์์์ ๋๋ฆฐ ๊ฒ์ผ ์ ์์ต๋๋ค. ํน์ simple_pyspark.py ์ํํ์ ๋ ๋ช ์ด ์ ๋ ๊ฑธ๋ฆฌ์ จ๋์ง ๋จ๊ฒจ์ฃผ์๋ฉด ์ ๋ ๋น๊ต๊ฐ ๋ ๊ฒ ๊ฐ์ต๋๋ค.ํ์ดํ ์ ๋๋ค ๐ช
- 0
- 2
- 25
Q&A
ot ์๋ฃ
์๋ ํ์ธ์ ๊น์์ฐฌ๋! ๊ฐ์ ์๊ฐ ๋ถ๋ถ ์๋ฃ๊ฐ ์์๋ค์ ๐์ถ๊ฐํด์ ์ ๋ก๋ ์๋ก ํด๋จ์ต๋๋ค. ์๋ ค์ฃผ์ ์ ๊ฐ์ฌ๋๋ ค์ ๐
- 0
- 2
- 23
Q&A
task_id ์ฌ์ฉ๋ฒ์ด ๋ญ๊ฐ ๋ฐ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์๋ ํ์ธ์ ใ ใ ใ ๋!ํน์ ์์ฑํ์ ์ฝ๋๋ฅผ ๋ณผ ์ ์์๊น์? ๊ทธ๋ฆฌ๊ณ ์ง๋ฌธ์ ๋ด์ฉ์ด ์ ๊ฐ ์ ์ดํด๊ฐ ์๊ฐ์์. ๐์ด๋ค ์ ์ด ๊ถ๊ธํ์ ์ง ์กฐ๊ธ๋ง ๋ ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค ๐
- 0
- 3
- 38
Q&A
3.0์์๋ ์์ ๋ ธํธ๊ฐ ์ฑ๋ฆฝํ๋์ง ํ์ธ ๋ถํ๋๋ฆฝ๋๋ค!
์๋ ํ์ธ์ ใ ใ ใ ๋!ํด๋น ๊ฐ์ ์ค์ต์ฝ๋๋ฅผ ๋ณด์๋ฉด bash_t1 = BashOperator( task_id='bash_t1', bash_command='echo "data_interval_end: {{ data_interval_end }} "' ) bash_t2 = BashOperator( task_id='bash_t2', env={ 'START_DATE':'{{data_interval_start | ds }}', 'END_DATE':'{{data_interval_end | ds }}' }, bash_command='echo $START_DATE && echo $END_DATE' ) ์ด๋ ๊ฒ ์์ฑํ๋ ๋ถ๋ถ์ด ์์ต๋๋ค. ๋ณด์๋ฉด data_interval_start ์ end ๋ณ์๋ฅผ ์ถ๋ ฅํ๋๋ก ๋์ด ์๋๋ฐ ์ ๊ฐ ๊ฐ์๋ฅผ ์ดฌ์ํ๋ ์์ ์ ๋ฒ์ (2.5.1)์์๋ ๋ ๊ฐ์ด ๋ค๋ฅด๊ฒ ๋์ต๋๋ค. ์ ํํ๋ data_interval_start ์ end ๋ณ์๊ฐ์ด ํ๋ฃจ ์ฐจ์ด๋ฅผ ๊ฐ์ง๋๋ค. ๊ทธ๋ฐ๋ฐ Airflow 3.0 ๋ฒ์ ๋ถํฐ data_interval_start์ end ํ๋ผ๋ฏธํฐ๊ฐ ๋์ผํ ๋ ์ง๋ฅผ ๊ฐ์ง๋๋ค. ๊ทธ๋์ ์ค์ตํด๋ณด์๋ฉด ๊ฐ์ ๋ นํ ๋ด์ฉ๊ณผ๋ ๋ค๋ฅด๊ฒ ๋์ผํ ๋ ์ง๋ก ๋์ค๋๊ฑฐ๋ฅผ ๋ณด์ค ์ ์์๊ฑฐ์์. ์ด๋ ์ค์ต์ ์๋ชปํ๊ฒ ์๋๋ผ ๋ฒ์ ์ฐจ์ด์์ ์ค๋ ์ฐจ์ด์ ์ด๋ผ๋ ๊ฑธ ์ค๋ช ๋๋ฆฌ๊ณ ์ ์ค์ต ๋ ธํธ๋ฅผ ์ถ๊ฐํ์ด์.์ดํด๋์ จ์๊น์?
- 0
- 3
- 38
Q&A
email operator ์ค๋ฅ ๊ด๋ จ
์๋ ํ์ธ์ bbbangduk9๋!ํ์ธ์ด ๋ฆ์์ต๋๋ค.์ ๋ณด๋๊น conn ์ด๋ฆ์ ์คํ๊ฐ ์๋๊ฒ ๊ฐ์์. conn_stmp_gmail -> conn_smtp_gmail ์ด๋ ๊ฒ ์คํ ๋ถ๋ถ ๋ณ๊ฒฝํด์ฃผ์ธ์ ^^
- 0
- 2
- 37





