전체 글
-
Java Stream Custom Collection 구현하기Back-end/Java 2024. 1. 29. 14:18
이번 주제는 자바 8부터 지원하는 Custom Stream 구현하기 관한 주제입니다. 소개 자바 8이 등장하며 많은 자바 개발자들이 Stream을 사용한다. Stream의 강점은 간결하고 가독성이 좋은 코드를 만들 수 있고 Immutable한 동작을 보장한다. 복잡한 코드 파이프라인을 구성하는 경우 어렵게 코드를 구성해야한다. 이러한 문제를 해결할 수 있는 방법이 Custom stream이다. Collector Interface Interface Collector - T: 변환 및 집계가 필요한 입력 타입 - A: 중간 결과(변형이 가능한) 타입 - R: 결과에 대한 리턴 타입 인터페이스 제공 메서드 - supplier(): 새로운 결과를 생성함. - accumulator(): 변형된 데이터를 모으는 ..
-
Micrometer custom metric 생성하기Back-end 2024. 1. 28. 13:47
개요 Micrometer provides a simple facade over the instrumentation clients for the most popular observability systems, allowing you to instrument your JVM-based application code without vendor lock-in. Think SLF4J, but for application observability! Data recorded by Micrometer are intended to be used to observe, alert, and react to the current/recent operational state of your environment. 업무를 하며 워크..
-
Spark + Iceberg - 5(Merge on read vs Copy on write)Data Engineering 2024. 1. 21. 09:46
소개 아이스버그 마지막으로 볼 기능인 MOR & COW 이다. 빅데이터를 다루는데 Update를 지원한다는 건 모든 ACID 트랜잭션을 지원한다는 것이다. 물론 OLTP 보다는 성능이 떨어지겠지만 OLAP에서 구현했다는 것에 대한 의미가 있다고 본다. COW는 "읽기가 자주 발생하고 수정/삭제가 자주 발생하지 않고 대규모 테이블 업데이트를 사용하는 경우" 사용된다. 말 그대로 수정해야하는 컬럼이 있는 데이터 파일을 복제해 컬럼 데이터가 업데이트 되어진 파일을 만드는 것이다. 많은 컬럼이 수정될 때는 효율적이지만 소수 컬럼이 수정될 때는 전체 데이터를 복사하기 때문에 비 효율적이다. MOR은 "수정/삭제가 빈번하게 발생하는 테이블을 사용하는 경우" 적합하다. COW와는 달리 MOR은 변경 사항들을 새 ..
-
Spark + Iceberg - 4(Time Travel)Data Engineering 2024. 1. 18. 21:20
소개 아이스버그 기능인 Time Travel기능에 대해서 살펴보자. 데이터를 Create or Delete 시 Snapshot이 만들어지는데 이것을 이용해 과거 데이터로 롤백할 수 있다. Partition이 변경되는 부분은 기록이 안되는 것 같다. 간단한 기능 실습을 해보자. 실습 1. CREAT TABLE create table time_travel ( ID BIGINT, NAME STRING ) USING ICEBERG LOCATION 's3a://martinispark/timetravel' 2. INSERT INTO Data INSERT INTO time_travel VALUES (1,'martini'), (2,'kebin'), (3,'jack') 3. INSERT INTO Data INSERT I..