개발
[Spark] Spark deploy mode 설정(Cluster/Client)
Spark에서 클러스터 매니저로 YARN을 사용하고 있는데, 배포 방식에 따른 차이(리소스 할당 등) 때문에 위 글을 작성하게 되었다. 0. Cluster Mode? Manager가 뭐야? Cluster Manager란? 여러 대의 서버로 구성된 클러스터 환경에서 Spark 애플리케이션이 실행되는 컴퓨터 클러스터의 리소스(Driver와 Executor사이의 자원)를 관리하는 시스템이다. Cluster Manager는 Spark 애플리케이션의 다양한 작업 및 단계에 CPU, 메모리 및 네트워크 대역폭과 같은 리소스를 할당하고 이러한 작업의 실행을 모니터링하여 성공적으로 완료되었는지 확인하는 역할을 한다. 배포 방식은 Client mode와 Cluster mode 2가지 이다. 드라이버 프로그램이 지역적으..
[추천시스템] 성능 평가 지표(pyspark) - Precision, Recall, Map, NDCG
추천시스템에서 랭킹하는 방식으로 좋은 추천(랭킹)을 했는지에 대해 정량평가 할 수 있는 4가지 지표를 정리해보고자 한다. * 이하 코드는 함께 인턴했던 뢀뢀씨❤️와 함께 작성했습니다! 뢀뢀씨 보고 있다면 댓글 달아주세요 1. Precision/ RecallPrecisionK 개 추천했을때, 추천결과가 hit한 precision 평균을 의미순서가 중요하지 않다.모델이 10개를 추천했을때 사용자가 몇개를 봤냐 사실 pyspark에서는 프리시즌을 계산하는 모듈을 제공하는데 생각했던 수식과의 차이 때문에 직접 udf를 제작하게되었다. pyspark 모듈과 udf의 차이는 관련도(relevance)를 매기는 기준이 다르다. pyspark : labeludf : label[:k]예시) prediction : [a,..
[Spark DEBUG] partiton path load 오류
문제 상황 참조하는 테이블은 컬럼 기반의 데이터 저장 방식인 parquet 포맷. max partition이 25개로 설정되어 있음. path를 확인하는 시점과 데이터프레임을 load하는 시점에서의 리스트가 달라 path가 없다는 오류 발생. -> 25 제한에 따라 가장 오래 된 파티션이 삭제 됨으로 해당 파티션이 없다는 오류 발생 시도한 것들 기존 방법 (기존 코드를 그대로 따라 갔었는데, 해당 방법은 전체 메타데이터를 로드하는 방법임을 깨달음 stackoverflow) 배열로가져오고 맥스값 가져오기. collect가 한번 로드되면 목록 외로 데이터 전체가 로드 되는 줄 알았는데 아니었음. max_updatetime = spark.sql("""select max(updatetime) from db.ta..
[python] 표준 입출력 sys.stdout / sys.stderr?
표준 입출력이란? 표준 입력(stdin) 파이썬 함수 : input() 표준출력(stdout) 함수 : print() python의 print(), input() 같은 함수들은 시스템 함수를 활용해서 만들어진 입출력이 혼합된 함수이다. 일종의 모듈(특정 기능들(함수, 변수, 클래스 등)이 구현되어있는 파일을 의미)이라고 볼 수 있고, print()나 input()이 없었다면 표준입출력을 사용해야한다. 일단 내장함수 print의 정의를 보면 file=sys.stdout이 기본 인자(Arguement)로 전달되는 것을 알 수 있다. print(*objects, sep=' ', end='\n', file=None, flush=False)(공식문서) Print objects to the text stream f..