전체 글(73)
-
[데이터 엔지니어링] RDS의 테이블을 Athena 에서 사용할 때의 문제
개요 RDS에서 매일 생성되는 스냅샷으로 Athena에서 과거의 테이블을 사용할 수 있게 했다. 그러나 시간 문제가 두가지가 발생했다. 문제 첫 번째 문제 - 시간으로 필터할 수 없는 문제 S3에 데이터를 저장한 후 그대로 Glue로 크롤링 후 Athena에서 날짜로 필터해서 읽으려고 시도했다. 그러나 쿼리 결과가 비어있었다. Athena는 Java Timestamp 형식이 필요하다고 하는데, 데이터가 그렇지 않은 것으로 예상된다. 해결 방법은 다음과 같다. 열을 스트링으로 정의한다. YYYY-MM-DD HH:MM:SS.fffffffff 형식으로 변환한다. 쿼리에서 Presto의 날짜 및 시간 함수를 사용하여 DATE 또는 TIMESTAMP로 읽는다. https://aws.amazon.com/ko/pre..
2021.06.04 -
[간단 데이터 엔지니어링] 프레스토(Presto)란?
개요 Presto는 페이스북에서 아주 많은 데이터를 빠르고 효율적으로 분석하기 위해 개발되었다. 페이스북에서는 300PB 규모의 데이터 웨어하우스에 쿼리할 때 사용하고 있으며 현재는 Airbnb와 Dropbox 등에서도 사용되고 있다. 다양한 소스를 지원해주는데 Hive, Cassandra, RDB, AWS S3 등에서 데이터를 읽을 수 있다. Hive는 처리할 때 중간 결과를 디스크에 저장하지만 Presto는 메모리에 저장하기 때문에 속도가 훨씬 빠르다. 하지만 리소스를 더 사용하게 된다. Architecture Presto는 하나의 Coordinator가 다양한 소스에서 데이터를 가져와 Worker에게 전달을 해주는 역할을 한다. 쿼리 처리 방법 클라이언트에서 Coordinator로 쿼리를 보낸다. ..
2021.06.02 -
[⚡AWS] Redshift 상관관계가 있는 서브 쿼리 오류
개요 This type of correlated subquery pattern is not supported due to internal error 레드시프트에서 쿼리를 보낼 때 위와 같은 에러를 반환할 때가 있다. Redshift는 쿼리 플래너에서 쿼리 재작성을 이용하여 상관관계가 있는 패턴 등을 최적화한다. MySQL과는 처리해주는 방식이 다르기 때문에 지원하지 않는 상관관계를 가진 서브쿼리들이 있다. 지원하지 않는 서브쿼리 1번) 건너뛰기 수준의 상관관계 참조 event 테이블은 가장 상위 레벨에 있으나 가장 하위의 서브쿼리에 event 테이블이 상관관계로 사용되고 있다. select event.eventname from event where not exists ( select * from list..
2021.05.27 -
[⚡AWS] Redshift에서 View 사용하기
개요 View는 실제 테이블은 아니고 참조를 할 때마다 쿼리를 보내 테이블처럼 보여주는 기능이며 이 기능을 Redshift에서도 사용할 수 있다. 시작하기 1. View 생성 문법 CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS query [ WITH NO SCHEMA BINDING ] OR REPLACE: 같은 이름의 뷰가 이미 있을 경우 쿼리를 교체한다. name: 뷰 이름 column_name: 뷰에서 사용할 컬럼명, 입력하지 않으면 쿼리를 보고 자동으로 생성한다. query: 쿼리 WITH NO SCHEMA BINDING: 뷰가 데이터베이스 객체에 바인딩 되지 않도록 하여 종속성을 없앤다. Late Binding 쿼리될 때까지 데이터..
2021.05.25 -
[⚡AWS] EC2 스팟 인스턴스 간단한 개념
개요 스팟 인스턴스는 온디맨드에 비해 70~90%정도의 가격으로 EC2 인스턴스를 이용할 수 있게 해주는 기능을 말한다. 가격은 수요와 공급에 따라 항상 변화한다. 대신 안정성이 떨어지는데 전체 EC2 인스턴스가 부족해지면 사용하던 스팟 인스턴스를 종료시킨다는 것이다. 그래서 유연하게 동작해야하는 작업에 사용된다. 개념 spot capacity pool 미사용 EC2 인스턴스 집합을 말한다. Spot Price 스팟 인스턴스의 현재 시간당 가격이다. Spot Instance request 스팟 인스턴스를 사용하기 위한 최고 가격을 제시하면 그에 맞는 인스턴스가 있을 때 사용할 수 있게 해준다. 일회성이나 영구적으로 사용하는 방법이 있는데 영구적 사용시 인스턴스가 종료되고 다시 인스턴스 풀에 사용할 수 있..
2021.04.30 -
[👾Git] Git 서브모듈(submodule) 사용법
About 프로젝트를 할 때 코드를 깃에 올려서 관리를 하는데, 나중에 다른 곳에서 중복 코드를 만들지 않고 사용하려면 깃을 분리해서 코드를 나누는 것이 좋다. 이럴 때를 위해서 git에서 제공해주는 것이 서브모듈(submodule)이다. Submodule 서브모듈 추가하기 메인으로 사용하는 깃에서 서브모듈을 사용하고 싶다면 git submodule add 명령어를 사용하여 추가할 수 있다. git submodule add 이 명령어를 사용해서 추가하면 .gitmodules에 서브모듈이 아래처럼 추가된다. [submodule "sample-submodule"] path = sample-submodule url = https://github.com/user-id/sample-submodule git sta..
2021.04.17