개발Tip
-
[Linux] ec2 방화벽 port 설정 명령어(feat. firewall-cmd)개발Tip 2024. 2. 1. 22:27
방화벽 등록 리스트 확인 $ sudo firewall-cmd --list--all 방화벽 상태 check $ sudo firewall-cmd --state 방화벽 port 등록 $ sudo firewall-cmd --permanent --add-port={port number}/tcp => 바로 반영 안됨 방화벽 리로드 $ sudo firewall-cmd --reload 당신이 어떤 것을 할머니에게 설명해주지 못한다면, 그것은 진정으로 이해한 것이 아니다. - A.Einstein
-
나의 인생 첫 오픈소스 컨트리뷰트 성공 후기개발Tip 2023. 12. 17. 21:54
예전부터 오픈소스 컨트리뷰터라고 하면 몬가 "찐개발자" 같다는 생각을 하곤 했다.그래서 나의 버킷리스트이기도 했던 꿈의 오픈소스 컨트리뷰트를 예상치 못한 시점(?)에얼떨결에 하게 되었다는,,😅 후기를 남겨보려고 합니다. 때는 바야흐로.. 데이터 디스커버리 플랫폼(A.K.A DDP)인 Datahub를 구축하고,내부 기능들을 살피던 중 코드 커스텀화를 위해 공식문서와 github 코드들을 리뷰하던 때였다. datahub의 metadata-ingestion source를 tableau로 활용했기 때문에,tableau recipe 코드를 탐색하던 중 config에 뭔가 빠져있는 듯한 허전한 느낌이었다. 그래서 내가 짰던 recipe 코드와 비교해보니 token값이 빠져있는 것을 발겼했고,저의 경우 token ..
-
내가 문제를 해결하는 방법(feat. 모든 답은 코드에 있다@_@)개발Tip 2023. 5. 27. 12:43
데이터 엔지니어링 업무에서 갑작스럽게 예기치 않은 에러들을 만났을 때, 문제를 해결하는 방법에 대해 짧게나마 생각을 정리해보려고 한다. 문제상황 case: airflow에서 센서(정확히는 ExternalTaskSensor)로 dependency가 걸려있는 두 개의 dag에서 에러 발생 A DAG -> B DAG의 순서로 돌아야하지만 B가 A가 끝나기도 전에 먼저 돌아감 센서 작동이 잘 안되거나/ 앞 DAG의 task 결과에 따른 dependency가 반영이 안됨 한마디로 스케줄이 꼬여버림 해결방법 고민: 문제를 정확히 파악했으면 어떻게 해결해야할까 잠시 고민 rewind 기법으로 코드를 돌아가보며 머릿속으로 전체 시나리오 시뮬레이션해보기 해결방안 : 코드를 돌아가보니 센서는 가장 최신의 dag_run i..
-
파일 싱크 자동화를 위한 incrontab 스크립트 개발(feat. git->s3)개발Tip 2022. 12. 26. 21:32
도입배경 Airflow에서 실행하는 ETL pyspark 스크립트를 s3 버킷에 저장해두고 사용중이었는데, 그러면 매번 수동으로 파일을 upload해야하고, 파일의 히스토리 및 버전 관리의 필요성을 느낌. 따라서 Git에 파일을 올리고, s3에도 자동으로 업데이트 해주어 싱크를 맞출 수 있는 자동화 시스템을 구현할 수 있는 방법 모색함. 이때 고려했던 점은, 현재 회사에서 bitbucket server를 사용중이므로 GitHub Action를 사용할 수 없었고 Jenkins를 사용해보려고 했으나, 이전에 써보지 않았으므로 러닝커브를 고려하여 구글링을 통해 알게된 incrontab으로 간단하게 스크립트로 짜서 구현하기로함. 개발과정 1. 로컬에서 git에 etl 파일 업도르하면, Airflow 서버에서 c..
-
S3/Athena DB명 하이픈 포함 시 이스케이프 문자 처리개발Tip 2022. 9. 16. 22:54
EMR에서 데이터 전처리 후 S3에 테이블로 저장 시 DB명에 하이픈(-) 문자가 포함되어 있는 경우, 그냥 처리하면 에러가 발생한다. 예시) dataframe.write.format("parquet").option("path", "s3://folder/").saveAsTable("db-name.table_name") 이때 db명이 test-db 라고 한다면, 이스케이프 문자 처리를 해주어야 하는데 db명을 백틱(‘)으로 감싸주면 된다. => `test-db` dataframe.write.format("parquet").option("path", "s3://folder/").saveAsTable("`db-name`.table_name") 이렇게하면 정상적으로 저장이 되는 것을 확인 할 수 있다 😃 - 이..
-
UnicodeEncodeError: 'ascii' codec can't encode characters개발Tip 2022. 3. 6. 00:41
기존 yaml 파일의 코드를 수정하기 위해 write를 시도해봤더니 아래와 같은 에러가 나왔다: File "/data/airflow/../delete_serviceKey_dag.py", line 45, in get_client_names outfile.write('\\n\\n\\n'.join(new_clients)) UnicodeEncodeError: 'ascii' codec can't encode characters in position 449-453: ordinal not in range(128) =>file을 열고 작성할 때 open과 write 둘다 encoding이 필요하다 with open('/data/airflow/G2-CONF/clients.yml', encoding="utf-8") as ..
-
[Linux] 리눅스 zip 압축 명령어개발Tip 2022. 2. 3. 22:37
1. ls 명령어를 쳤을 때 압축할 폴더가 있는(폴더 들어가지 X) 위치에서: zip -r {zip파일 생성 이름} {압축할 폴더 이름} zip -r python.zip python 2. 압축할 폴더 내부에서 zip 실행 시: cd python zip -r python.zip . https://stackoverflow.com/questions/40003310/zip-error-nothing-to-do zip error - Nothing to do I try to zip all folders in given directory. So I wrote this find /home/user/rep/tests/data/archive/* -maxdepth 0 -type d -exec zip -r "{}" \; but..
-
Memory 메모리 체크 Linux 명령어(Feat. RAM, GPU)개발Tip 2021. 10. 22. 22:01
RAM Memory $ free RAM Memory(GB) $ free -h RAM Memory 조회(every 2s/GB) $ watch free -h RAM Memory 조회(every 1s/GB) $ watch -n 1 free -h GPU 조회(every 2s) $ watch nvidia-smi GPU 조회(every 1s) $ nvidia-smi -l 1 당신이 어떤 것을 할머니에게 설명해주지 못한다면, 그것은 진정으로 이해한 것이 아니다. - A.Einstein