분류 전체보기
-
분산 쿼리 엔진 prestoSQL의 바뀐 이름 TrinoReview 2022. 1. 4. 00:31
Trino? 처음듣는데? 페이스북 내부 직원 약 1,000명은 Presto를 매일 페타바이트가 넘는 데이터를 스캔하는 30,000건이 넘는 쿼리를 페이스북 데이터를 조회하는데 사용하고 있다. presto는 페이스북이 최초 개발하여 오픈 소스로 공개한 대화식 데이터 쿼리 서비스. 이를 이용해 다양한 데이터베이스에 대한 일관된 ANSI SQL 질의가 가능하다. 빠른 속도를 보장하기 위해 엔진 레벨에서 분산 컴퓨팅 기법이 사용된다. 2020년 12월 27일 Presto 초기 멤버들이 페이스북을 나와 만든 PrestoSQL 프로젝트가 Trino로 리브랜딩 됨 350버전 이후로 prestoSQL에서 Trino로 완전히 이름이 바뀜 Amazon은 presto 0.172 기반으로 시작해 자체 개발한 Amazon At..
-
airflow의 새로운 경쟁자 오케스트레이션 플랫폼 dagsterProgramming/python 2021. 12. 23. 23:42
Open Source Data Stack Conference 아래 내용은 위 동영상의 내용을 번안하고 정리한 내용입니다. 위 사진의 기술들은 다양한 방식들로 서로 의존성이 존재한다. 예를들어 스노우플로우나 다른 데이터 웨어하우스에서 데이터가 만들어지기 전까지 dbt를 실행할 수 없다. 그리고 dbt가 그것의 모델을 업데이트하기 전까지 Grouparoo같은 리버스 ETL은 새로운 정보를 적재할 수 없다. 이런 의존성들간에 Ordering과 Excute를 조율하는 것이 오케스트레이션의 목적이다. 왜 dagster여야 하는가? 전통적인 오케스트레이션은 스케줄링과 실행을 통합하는 시스템과 가시적이고 알림을 운영할 수 있어야 한다. 여기에 더해져서 덱스터는 유용한 metadata를 생성하는 과정에서 데이터가 어디..
-
[에러로그]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..