Programming
-
스파크에서 지원하는 압축 알고리즘 비교Programming 2024. 6. 26. 23:54
압축 알고리즘 비교Configuration - Spark 3.5.1 Documentation Configuration - Spark 3.5.1 DocumentationSpark Configuration Spark provides three locations to configure the system: Spark properties control most application parameters and can be set by using a SparkConf object, or through Java system properties. Environment variables can be used to set per-macspark.apache.org현재 스파크 3.5 기준 압축 알고리즘으로 snappy, g..
-
당신의 인덱스는 안녕하신가요?(커버링 인덱스)Programming 2024. 3. 31. 21:10
인덱스를 적용하는 이유 인덱스는 데이터베이스 내의 데이터를 빠르게 찾을 수 있도록 도와주는 데이터 구조이다. 인덱스를 사용하지 않은 상태에서 데이터를 검색하면, DBMS는 요청된 데이터를 찾기 위해 테이블의 모든 행을 순차적으로 검색해야 한다. 이러한 과정을 풀 테이블 스캔(Full Table Scan)이라고 하며, 대량의 데이터가 저장된 테이블에 풀 스캔을 할 경우에 많은 시간이 소요될 수 있다. 인덱스를 적용하면, DBMS는 인덱스를 통해 데이터의 위치를 빠르게 찾아 접근할 수 있게 되어 검색 속도가 향상된다. 대부분 인덱스를 설명할 때 책의 목차에 비유하는 이유도 이 때문이다. 인덱스는 검색 시간과 쿼리 실행 시간을 단축시킴과 동시에 테이블 전체가 아닌 인덱스 내에서 스캔하기 때문에 DB에 부하도 ..
-
SparkSQL에서 증분 테이블 처리하기Programming 2024. 2. 25. 21:49
배경ETL처리시 Spark를 통해 Trasfroming을 하는데 1000만 로우가 넘는 테이블을 이관하며 기존 Overwrite하는 방식이 아닌 증분되는 양만큼만 반영하기로 함updated_at 컬럼으로 증분되는 양만 읽어서 기존 테이블에 upsert를 하는 방식현재 운영하는 데이터웨어하우스는 일반적인 RDB가 아닌 HDFS기반이므로 불변성을 위해서 upsert를 할 수 없음옵션Hudi or Delta Lake or Iceberg와 같은 동시성이 제공되는 오픈소스를 사용한다현재 실시간 테이블을 위해서 Delta Lake를 사용되고 있지만 이관을 위해서는 따로 사용하고 있지 않으므로 다른 테이블과 사용성 및 통합을 위해서 해당 옵션은 보류SQL 윈도우 함수를 통해서 증분된 만큼 처리하고 기존 값과 UNIO..
-
PrestoSQL to Trino Migration 할 때 주의할 점Programming 2023. 12. 22. 23:07
prestoSQL to Trino라고는 하지만 prestoSQL은 사실 Trino로 리브랜딩되기 전의 이름이므로 Trino의 메이저 업데이트라고 봐도 무방하다. 이 포스팅에서는 트리노의 메이저 업데이트 할 때 신경써야할 점들을 모은 내용이다. 사실 메이저 업데이트를 진행한 것은 아주 오래전이고 구성한 인프라별, Trino에 설치한 플러그인별로 증상이 상이하며 지엽적인 내용이 될 가능성이 높다고 생각해서 그 당시 포스팅으로는 작성하지 않고 있었던 찰나에 그래도 부분적으로 나마 나와 동일한 증상을 겪고 있을 사람들을 위해 기록을 남긴다. 메이저 업데이트를 하는 것보다 새로 설치하는 것이 낫다 항상 앞자리가 바뀌는 업데이트를 진행할 때마다 느끼는 생각이다. 업데이트를 진행하다보면 지금당장은 티가 안나더라도 어..
-
kafka retention 용량 설정 값 이해하기Programming 2023. 5. 1. 01:17
overview retention.bytes옵션을 통해 retention 용량을 1GB로 설정했었는데 토픽의 용량이 7GB가 넘어가는 것들이 생겼다. 브로커당 용량이라고 이해해도 3GB넘지 않을 것이고 리플리케이션 팩터가 2라서라기엔 2GB를 훌쩍넘는다. 7GB라니...오버에도 한참 오버했다. 도대체 이 설정값들은 각각 무엇을 의미하는 것이고 어떤 매커니즘으로 메세지들이 지워지는지 파악해보자 Topic retention 용량 설정에 대해서 알아보기 전에 토픽에 대해서 간단히 정리해보자 partitions 리더 파티션과 팔로워 파티션으로 구분(replication-factor가 1인 경우 리더 파티션만 존재) 리더 파티션은 프로듀서 또는 컨슈머와 직접 통신하는 파티션으로 읽기, 쓰기 연산을 담당 팔로워 파..
-
debezium server 정리 및 트러블슈팅Programming/java 2023. 2. 6. 00:27
개요 CDC(Change Data Capture) CDC는 변경 데이터 켑처이라는 의미로 주로 데이터베이스와 같은 데이터 스토어의 데이터 변경을 포착하여 ETL, 감사(audit), 캐싱과 같은 다양한 후속 처리를 하는데 사용한다. Debezium 이름은 DB와 주기율표에 많은 요소 이름에 사용되는 -ium 접미사의 조합 Debezium은 다양한 데이터베이스를 모니터링하며 모든 이벤트를 대상으로 변경 사항을 분을 거의 즉시 응답하는 분산 오픈 소스 플랫폼이다. debezium은 결함과 실패를 허용하도록 설계되었고 수행하는 유일한 방법은 분산 시스템을 사용하는 것이다. Debezium은 모니터링 프로세스 또는 커넥터를 여러 시스템에 분산시킬 수 있고 문제가 발생하면 커넥터를 다시 시작할 수 있다. 카카오커..
-
ELT 툴 Airbyte 개요 및 M1 mac local환경 세팅Programming 2022. 4. 13. 15:13
Airbyte? 데이터 통합을 쉽고 확장가능성 있게 만들어주는 EL(T) Tool CDC기능을 사용 준실시간성으로 데이터를 가져올 수 있다 비교적 설치가 간편하다 지원하는 데이터 connector들이 많다 DB이외에 페이스북, 인스타그램 등 다양한 SNS과도 연동 가능하며 140개 이상의 커넥터를 지원 T(Transform)부분의 지원이 빈약하다 아직 Hive나 Glue 저장을 지원하지는 않는다 쿠버네티스, 에어플로우, dbt 등과 통합하여 사용할 수 있다. ex) airflow + airbyte + dbt on kubernates Architecture Airbyte는 플랫폼과 커넥터 이렇게 두가지 컨셉으로 나뉜다. 플랫폼은 모든 수평적 서비스들에서 요구하는 설정과 데이터의 움직임을 운영하는(UI, c..
-
airflow의 새로운 경쟁자 오케스트레이션 플랫폼 dagsterProgramming/python 2021. 12. 23. 23:42
Open Source Data Stack Conference 아래 내용은 위 동영상의 내용을 번안하고 정리한 내용입니다. 위 사진의 기술들은 다양한 방식들로 서로 의존성이 존재한다. 예를들어 스노우플로우나 다른 데이터 웨어하우스에서 데이터가 만들어지기 전까지 dbt를 실행할 수 없다. 그리고 dbt가 그것의 모델을 업데이트하기 전까지 Grouparoo같은 리버스 ETL은 새로운 정보를 적재할 수 없다. 이런 의존성들간에 Ordering과 Excute를 조율하는 것이 오케스트레이션의 목적이다. 왜 dagster여야 하는가? 전통적인 오케스트레이션은 스케줄링과 실행을 통합하는 시스템과 가시적이고 알림을 운영할 수 있어야 한다. 여기에 더해져서 덱스터는 유용한 metadata를 생성하는 과정에서 데이터가 어디..