전체 글
-
[에러로그]parquet파일 변환 fastparquet v.s pyarrowProgramming/python 2021. 11. 19. 16:06
에러 내용 parquet로 변환한 파일을 read해서 확인했을 때 일부 컬럼의 로우 값이 제대로 인코딩되지 않은 문제가 있다. 다른 컬럼의 값들은 정상적으로 표출되었지만 특정 컬럼에서만 이상이 생기는 것을 확인했다. to_parquet 메소드 pandas 라이브러리에서 to_parquet 메소드를 사용해서 데이터프레임을 parquet 포맷으로 변경할 때, 사용할 수 있는 엔진의 옵션은 두 가지가 있다. pyarrow와 fastparquet이 바로 그것인데, pandas 내부적으로 이 두 라이브러리들을 가져와서 parquet파일로 변환하게 된다. 라이브러리를 선택하는 방법은 engine 파라미터에 해당하는 라이브러리명을 적어주면 된다. df.to_parquet("test.parquet", engine="p..
-
재택근무를 희망하는 히치하이커를 위한 안내서Review 2021. 10. 17. 20:18
달콤했던 재택근무를 떠나보내며 어느새 코로나 일별 확진자 수가 3천명을 넘겼다는 소식이 뉴스를 통해 들리고, 몇 주째 2천여명 밑으로 떨어질 기미가 보이지 않는다. 예전에 1,000명을 넘겨도 직장 동료들과 친구들끼리 서로 걱정하며 안부를 전하던 것이 무색할 만큼 후반부 드래곤볼의 전투력 인플레이션마냥 이제는 2000명 정도는 “크큭, 고작 그 정도 수치인가?”속으로 코웃음치며 무뎌져 간다. 물론 그렇다고 이러한 상황에 대비하지 않는 것은 아니다. 백신 1차 접종도 받고, 어지간하면 집 안에서 해결하고 약속도 거리 두기 단계에 맞춰서 많은 인원 수가 모이는 모임같은 경우는 지양했다. 집돌이인 성향도 한 몫하긴 했지만 지금까지 간헐적으로 회사에서 재택을 하기는 했지만 이런 외부 상황과 나의 개인적인 사유를..
-
dockerfile 한국어 로케일 설정(feat. 우분투와 데비안의 차이)Programming 2021. 8. 10. 15:43
어플리케이션 내부나 쉘에서 한글이 등장할 때가 있는데 그때마다 오류가 생겨서 아예 언어셋을 UTF-8 인코딩된 한글 언어셋으로 설정했다. 해당 언어셋을 설치하기 위해서 아래와 같은 명령어를 dockerfile에 명시했다. RUN apt-get update && apt-get install -y locales git # Locale RUN localedef -f UTF-8 -i ko_KR ko_KR.UTF-8 ENV LC_ALL ko_KR.UTF-8 ENV PYTHONIOENCODING=utf-8 빌드 한 뒤에 docker run -it imagename /bin/bash 로 도커 내부의 쉘로 접속했더니 다음과 같은 경고가 떴다. bash: warning: setlocale: LC_ALL: cannot c..
-
데이터쟁이들을 위한 리소스 관리 플랫폼 Backend.AIReview/IT 2021. 7. 26. 01:49
오픈소스 컨트리뷰션 아카데미 Backend.AI라는 오픈소스 프로젝트를 알게 된 것은 오픈소스 컨트리뷰션 아카데미라는 과학 기술 정보 통신부에서 주최하며 프로젝트의 코어 개발자들의 멘토들에게 직접 멘토링을 받으며 오픈소스에 기여하고 평가받는 정부 프로그램이다. 최근에 github 잔디 심기에 몰두하면서 오픈소스 생태계에 대해 관심이 많이 생겼는데 그 관심을 살릴 수 있는 기회인 것 같아서 내 입맛에 맞는 프로젝트를 찾던 도중 발견한 것이 바로 이 Backend.AI였다. Backend.ai는 어떤 프로젝트인가? 왜 하필 이 프로젝트에 관심이 생겼는가는 지금 하고있고 고민하고 있는 일과 맞닿아있다. 우선 이 프로젝트에 대해서 소개하자면 Backend.AI는 오픈소스 리소스 관리 플랫폼이다. 클라우드로도 제..
-
파이썬 데코레이터에서 wraps를 사용해야 하는 이유Programming/python 2021. 6. 27. 22:48
파이썬에는 함수를 파라미터로 받아서 함수를 반환하기 위해서 데코레이터를 사용한다. 말하자면 함수의 함수인 셈인데, 파라미터 변환이나 코드 추적(로깅), 유효성 검사 및 재시도 로직 등 이 데코레이터를 사용하면 다양한 작업들을 손쉽게 처리해줄 수가 있다. 이 데코레이터를 사용할 때에는 주의해야할 점이 몇가지 있는데 오늘은 그 주의할 점에 대해서 이야기 하려고 한다. import logging as logger def trace_decorator(function): def wrapped(*args, **kwargs): """ decorator docstring """ logger.info("%s 실행", function.__qualname__) return function(*args, **kwargs) re..
-
Luigi로 batch job 모니터링 및 스케줄링Programming 2021. 6. 19. 17:28
개요 Spotify에서 개발한 오픈 소스 실행 프레임워크로, 복잡한 데이터 파이프 라인을 Python으로 배치 작업을 만들어 실행할 수 있다. 종속성 해결, 워크 플로 관리, 시각화, 실패 처리, 명령 줄 통합 등을 처리하는데 사용한다. 하이브나 Pig 또는 Cascading과 같은 로우 레벨에서의 데이터 전처리에 초점에 맞춰져있는 이런 프레임워크를 대체할 수는 없다. 대신에 많은 task들을 하나로 합치게 도움을 준다. 이름이 루이지인건 아마도 슈퍼마리오의 루이지가 배관공이라서 파이프라인을 다루는 일이기 때문이 아닐까 추측 기본 구조 Task class ExampleTask(luigi.Task): # Parameter 정의 count = luigi.IntParameter(default=7) def re..
-
Druid + superset로 BI 아키텍쳐 구축하기Programming 2021. 3. 28. 22:57
드루이드란? Druid는 대량의 트랜잭션 이벤트를 ingestion하고 탐색할 수 있도록 지원하는 엔진이다. 실시간과 시계열 데이터에서 100ms 이하의 쿼리 응답속도를 위해 설계된 오픈 소스 데이터 저장소 실시간/배치 데이터로 데이터를 수집해서 빠르게 BI쿼리(OLAP)를 처리, 분석하는 목적으로 사용 데이터 roll-up을 통해서 ingestion되는 원천 데이터를 취합할 수 있다. roll-up을 하면 원천 데이터의 저장 용량을 최소화 할 수 있고 스토리지 리소스를 절약하고 쿼리 속도를 빠르게 하지만 개별 이벤트들에 대해 쿼리할 수 없게 된다. OLAP(On-Line Analytical Processing)? OLAP, 온라인 분석 처리는 다차원 데이터 구조를 이용하여 다차원의 복잡한 질의를 고속으..
-
제닉스 XPAM 키보드 팜레스트 리뷰Review 2021. 3. 1. 16:15
기계식 키보드를 입문하게 되면서 기계식 키보드 말고도 챙겨야 할 것들이 여러가지가 생겼다. 키캡을 갈아 끼우는 흔히 말하는 키캡놀이도 손이 가고, 루프탑이나 패드같은 걸도 생각지도 않은 지출이 생겼다. 키보드를 사니 키보드를 위한 추가 지출이 생긴 것이다. 나머지는 뭐 사실 있으나 마나한 것이지만 팜레스트 정도는 장시간 데스크탑을 이용하는 성향이 짙은 나에게는 꼭 필요한 제품이었다. 바밀로 키보드같은 경우는 바디가 그렇게 높지 않아서 손목에 그렇게 큰 부담은 없지만 레오폴드나 다른 기계식 키보드를 장시간 사용한다면 손목이 꺾이는데서 오는 피로감이 분명이 사용자에게 크게 작용한다. 그래서 요즘 나오는 기계식 키보드들은 스텝 스컬쳐2라고 해서 계단식으로 손목이 최대한 꺾이지 않도록 타자를 칠 수 있도록 공학..