본문 바로가기

전체 글

(147)
pySpark & GraphFrames Install pyspark - graphframe Docker Image https://hub.docker.com/r/tomerlevi/jupyter-spark-graphframes Docker Run docker run -p 8888:8888 -p 4040:4040 -v ~:/home/jovyan/workspace --name jupyter tomerlevi/jupyter-spark-graphframes Use 위 Docker Container가 실행된 후, Jupyter Lab으로 이동 http://127.0.0.1:8888/lab pyspark를 사용하기 위해, Session을 생성해야함. #from pyspark import SparkConf, SparkContext from pyspark.sq..
Docker를 활용한 Celery Worker, beat 분리 Base 아래 구성은 API Server Redis Celery의 구조를 기반으로 한다. 문제 기존 사용하던 Celery Worker는 1개의 Queue를 통해 간단한 작업을 처리하고 있었다. 주기적인 간격으로 동작해야하는 기능이 필요했고, 그 기능을 구현하기 위해 Celery Beat를 사용했다. Celery Worker에 Beat Task를 위한 1개의 큐를 더 추가했고, 2개의 큐를 통해 각각의(기존 , 주기적) 작업을 처리하려 했다. 아래 명령어를 entripoint.sh에 추가하고 Docker를 통해 실행 시켰다. # entripoint.sh # # 해당 파일은 Docker Image를 생성할 때 추가하는 파일이다. # celery -A worker worker --loglevel=INFO --..
docker volume 파일 우선순위 Base Docker Compose를 활용 Container Host Container /work/test에 필요한 파일들이 존재함. 호스트에는 파일이 없음. 문제 Docker 컨테이너가 실행되면서, 컨테이너 안에있는 특정 폴더의 파일들을 호스트와 공유해야한다. volume: - /work/test:/work/test 위 같이 볼륨 바인딩을 해주니, 컨테이너 안의 test폴더가 빈폴더로 바뀌었다. 해결 Docker Volume 바인딩을 할 때, 2가지의 방법 호스트의 폴더에 바로 매핑하는 방법 docker volume을 생성해 놓은 후, 매핑하는 방법 1번의 경우는 문제에서 사용했던 방식이다. : 이렇게 했을 때, 볼륨 매핑되면서 덮어씌우는 디렉토리는 기준은 가 우선권을 가진다. 즉, 호스트의 디렉토리는..
Postgresql 리스트 데이터 넣기 Sqlalchemy, alembic, Postgresql Json에서 리스트 데이터를 파싱 후, Postgresql에 넣어야 할 일이 생겼다. 리스트 데이터를 Postgresql에 적재하기 위해서는 Postgresql에서 선언한 테이블의 컬럼 타입을 sqlalchemy.ARRAY()로 사용해야한다. 나는 ['A','B','C'] 와 같은 리스트 데이터를 Postgresql에 넣고 싶었고, sqlalchemy.ARRAY(sqlalchemy.TEXT())로 컬럼을 생성했다. PgAdmin에서 만들어진 컬럼을 확인하면, Type이 TEXT[]로 생성된 것을 볼 수 있다. 하지만, 만든 컬럼에 리스트 데이터를 넣게되면, 생각과는 다르게 값이 들어가게 된다. 나는 ['A', 'B', 'C']를 넣었지만, PgAd..
FastAPI zip 파일 업로드 FastAPI를 사용하다보면 파일 업로드하는 API도 만들게 됨. 일반적인 파일을 업로드하는것은 FastAPI Documents에서 제공된다. fastapi.tiangolo.com/tutorial/request-files/ Request Files - FastAPI Request Files You can define files to be uploaded by the client using File. Info To receive uploaded files, first install python-multipart. E.g. pip install python-multipart. This is because uploaded files are sent as "form data". Import File Import..
FastAPI Callback 기능 구현 FastAPI를 사용하여 API 개발도중 Callback 함수를 써야할 일이 생겼었다.. FastAPI documents에 OpenAPI Callbacks라고 있었으나, 아무리 읽고 해봐도 안됨. (아래 링크) fastapi.tiangolo.com/advanced/openapi-callbacks/ OpenAPI Callbacks - FastAPI OpenAPI Callbacks You could create an API with a path operation that could trigger a request to an external API created by someone else (probably the same developer that would be using your API). The pro..
[Git] stash clear 복구 하기 stash drop 해야할 것을 싫수로 clear했을 경우, stash 목록을 가져오는 Command 방법. 참고 링크 : starkying.tistory.com/entry/restoring-git-stash 실수로 clear한 Git Stash 복구하기 퇴근을 얼마 남겨두지 않은 어느 오후, 예전에 작업하던 변경분을 다시 가져오려고 IntelliJ에서 "Unstash Changes"를 열었다. 일단 그 전에! 이미 merge되어 필요 없어진 오래된 stash들을 drop한다는 걸... starkying.tistory.com
docker 정의 정리 docker docker 이미지 생성 dockerfile을 만들어 생성한다. 컨테이너는 프로세스이다. 따라서, 컨테이너 안에서 실행중인 프로세스가 없다면 컨테이너는 종료된다. docker 빌드 docker build -t 'AppName' 빌드명령을 수행하면, dockerfile에 정의한 내용이 line by line으로 실행된다. 이때 각 line마다 이미지 레이어를 저장하게된다.(저장된 이미지는 이후, 재 빌드시 캐쉬개념으로 사용) 이후, 다시 빌드했을 때 dockerfile의 변동사항이 없다면 이미 생성된 이미지를 사용하여 빌드의 최적화를 할 수 있다. 도커 이미지 업데이트 방법 docker에서 컨테이너 업데이트시, 기존의 이미지를 stop, rm 하고 새이미지를 실행한다. 다만, 이때 유지해야 할..