OSX 에서 Python LightGBM 패키지 설치때 고생한 경험
오랜만에 Python 으로 작성된 프로젝트의 개발 환경을 설정할 일이 있었습니다. virtualenv 를 만들고, pip -r requirements.txt 로 의존하는 패키지들을 설치하고 (lightgbm 포함), 예시 명령어를 실행하는 데 에러가 발생했습니다. lightgbm 을 초기화 하는 부분입니다.
software engineer
오랜만에 Python 으로 작성된 프로젝트의 개발 환경을 설정할 일이 있었습니다. virtualenv 를 만들고, pip -r requirements.txt 로 의존하는 패키지들을 설치하고 (lightgbm 포함), 예시 명령어를 실행하는 데 에러가 발생했습니다. lightgbm 을 초기화 하는 부분입니다.
ETL 작업을 어떻게 관리하는게 좋을지 고민입니다. 검색했을 때나 주변 분들 얘기를 들어봤을 때 Apache Airflow 가 많이 쓰이는 것 같습니다. 매니지드 서비스로는 GCP 에서는 Cloud Composer, AWS 에서는 AWS Data Pipeline 가 있습니다. 업무 인프라의 대부분이 AWS 라서 Data Pipeline 에 눈이 갔는데 아쉽게도 서울 리전에는 아직 제공되지 않습니다.
Ad-hoc 분석과 배치 작업에 Apache Spark 를 쓰고 있습니다. 현재 실무에서는 AWS 인프라 위에 직접 Spark 클러스터와 Zeppelin 을 구성해서 사용하고 있습니다. 기존 클러스터 구성이 만족스럽기에 EMR 로 마이그레이션 하진 않겠지만, 언젠가 별도의 인프라를 새롭게 구성해야 한다면 EMR 을 써보고 싶은 마음입니다. 그래서 EMR 에 대해 공부하기 시작했습니다.
이전 글인 MySQL 의 Geospatial Index (1) 에서 MySQL 5.7.5 버전의 InnoDB 스토리지 엔진부터 지원하는 geospatial index 를 활용해서 쿼리 속도를 높히는 방법에 대해 알아봤었습니다. 이번 글에서는 작성 시점 기준으로 최신 메이저 버전인 MySQL 8.0 에서 어떤 차이가 있는지 알아보겠습니다.
MySQL InnoDB 스토리지 엔진은 버전 5.7.5 부터 geospatial index 를 지원합니다. geospatial index 를 사용하고, where 절의 조건을 적절히 설정하면 쿼리 속도를 높힐 수 있습니다. 간단한 위도/경도 샘플 데이터를 생성해서 테이블을 만들고, 특정 위치로 부터 특정 거리 이내에 존재하는 레코드의 개수를 세는 간단한 쿼리에 대해 성능이 어떻게 개선되는지 확인해보겠습니다.