개발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에도 자동으로 업데이트 해주어 싱크를 맞출 수 있는 자동화 시스템을 구현할 수 있는 방법 모색함. 이때 고려했던 점은, 현재 회사에서 Attlasian bitbucket server를 사용중이므로bitbucket pipeline이나 Jenkins를 고려했지만(추후 구축함!) 이전에 써보지 않았으므로 살짝의 러닝커브가 있기에구글링을 통해 알게된 incrontab으로 간단하게 스크립트로 짜서 구현하기로함. 개발과정1. 로컬에서 git에 etl 파일 업로드 시, Airflo..
-
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