-
[Flink 공부하기] 1. Window 개념
Flink 윈도우란? 스트리밍 데이터는 끝이 없는 강물과 같다. 스트리밍과 배치의 차이도 그것이다. 끝이 없음 vs 끝이 있음...이렇게 끊임없이 흘러들어오는 스트리밍 데이터를 통계치로 만들려면 결국 '어디서부터 어디까지' 묶을지 정해야 하는데, 이것이 바로 윈도우 (window)이다. 윈도우는 시간 기반 또는 데이터 기반으로 설정할 수 있다.예를 들어 30초마다 집계한다면 시간 기반이고, 100개마다 집계한다면 데이터 기반이다. Flink 윈도우의 종류윈도우 종류는 Flink에서는 현재 4개로 구분된다. Tumbling (텀블링): 겹치지 않게 딱딱 끊어지는 윈도우. 예: 매 1시간 매출Hop (호핑): 겹치게 해서 부드러운 추세 계산. 예: 10분마다 갱신되는 최근 1시간 매출Session (..
-
Big Data 스파크 배치를 성능개선하다 (리팩토링)
최근에 Big Data 처리 배치 성능개선에 대한 고민을 할 기회가 있었다.전체 소요시간을 3시간 이상 줄여야하는 도전적인 과제였는데, 결국 성공했다...! (뿌듯) 데이터 입수 상황 1) 원본 소스 데이터세트는 10개 가량이다. 2) 1차 마트 데이터를 만드는 dag은 원본 소스 데이터 10개의 완료시점을 계속 감지하고 있다. (sensor 존재)센서가 10개 다 성공하면, 10개 데이터에 여러가지 필터를 적용하여 1차 마트 데이터를 만든다. 3) 2차 마트 데이터는 1차 마트 데이터를 기반으로 만드는데, 이벤트 시간을 주요 검색 key로 사용한다. 리팩토링 방법 A. 센서 병렬화이것은 아주 단순한 아이디어였는데, 크게 효과가 있었다.센서 10개가 다 성공한 후 전체 데이터를 만들지 말고..
-
데이터 엔지니어링에서 최종 파일 용량 줄이는 tip
컬럼 정렬 수행1) “정렬”이 왜 도움이 되나? (컬럼 기준 정렬)Parquet는 컬럼 단위 인코딩 + 페이지/딕셔너리 인코딩 + 압축을 사용해.값이 뭉쳐 있을수록(= 같은 값이 길게 반복되거나 가까이 모여 있을수록)RLE(런-렝스), 딕셔너리 인코딩 적중률 ↑ → 압축률이 올라가고 파일 크기 ↓.따라서, 쿼리 필터/파티션 키/중복도가 높은 컬럼을 우선 정렬하면 효과가 좋다.그리고 길이가 긴 string 데이터일 수록 효과가 좋았다. 압축량이 커지기 때문이다.주의: 전체 셔플이 필요하므로 쓰기 비용↑. 하지만 장기적으로는 읽기 성능 + 용량 절감의 이득을 볼 수 있었다.3) 파티셔닝과 파일 개수의미 있는 정렬키로 프루닝 + 정렬 효과를 극대화.데이터 양이 적은 경우 order by, 많은 경우 sort ..
-
가용성과 신뢰성의 개념 정확히 이해하기
가용성과 신뢰성, Reliability와 Availability의 개념이 헷갈릴 때가 많았다.그래서 복습을 하고, 구체적인 예시로 적어두려고 한다. 신뢰성이 낮다는 것은 결함이 많다는 것이다. 그러나 결함 != 장애이다.결함은 사양에서 벗어나서 동작하는 것이고, 장애는 시스템 전체가 멈춘 것이다. 결함이 장애로 이어지지 않도록 설계할 수 있다. 요약하면 신뢰성은 결함과 연결되고, 가용성은 장애와 연결된다.신뢰성이 낮더라도(결함이 많더라도) 가용성이 높게 설계된 시스템은 사용자가 이상을 인지하지 못한다. 다음은 가용성과 신뢰성의 차이에 대한 실제적이고 구체적인 예시들이다. GPT의 도움을 받았다. (고마워... 이해가 쏙쏙..) ✅ 1. Kafka 클러스터Reliability (신뢰성)Kafka 브로..
-
[Hive] insert overwrite 중에 데이터가 없어도 파티션이 생겼으면 할 때
[요건 정의]Hive 테이블의 특정 파티션에 대해 insert overwrite로 데이터 재생성중이다. 이 때 row가 없어도 파티션 폴더는 생겼으면 함 [문제 상황]row가 없는 경우에 물리적 파티션 폴더가 생기지 않고, 사라져 버림... [해결 방법]1. 해당 파티션을 ALTER 테이블 DROP PARTITION 쿼리로 메타스토어에서 삭제한다2. 삭제한 후 insert overwrite 수행한다3. 그러면 row가 없어도 파티션 폴더가 생긴다. 데이터 재생성시 발생하는 hive serde 오류인 것 같다.파티션이 없는 상태에서 최초 실행시에는 디렉토리가 생기는데, 파티션이 있는 상태에서 재실행하면 디렉토리가 사라져버린다; 파티션이 없는 상태에서, 최소 실행이어야 row가 없어도 파티션 폴더가 생기..
리스트 : 콘텐츠가 있으면 최근 5건을 불러옵니다.
-
일본 우체국 국내 우편 이용 방법/봉투/발송후기일본 살이 Tip 2019.07.28 14:27
발송 방법 우체국 발송 : 창구에서 접수하고 요금을 지불합니다. 이 때에는 우표 대신 소인 도장을 찍어 줍니다. 우체통 투입 : 도심의 우체통에 우편물을 투입하는 형식으로 접수할 수 있습니다. 사전에 구입한 우표가 반드시 붙어 있어야하며, 우표는 우체국, 그리고 로손・세븐일레븐・패밀리마트 전국 편의점에서 요금별로 구입이 가능합니다. 우체통에 투입구는 일반 우편물[왼쪽]과 특급 우편물[오른쪽]으로 나누어집니다. 이 포스트에서 다루는 편지 형 일반우편물의 경우, 우체통의 [왼쪽]에 투입하게 됩니다. 우편 요금 (일반) 정형 우편물 (定形郵便物) 규격: 세로 14 ~ 23.5cm, 가로 9 ~ 12cm, 두께 1cm 이내 무게 가격 25g 이내 82 엔 50g 이내 92 엔 * 일반 봉투에 편지지 3~4장를 ..
-
[파이썬/Python] 티켓팅 자동화 매크로 개발해보기Python 2019.07.01 14:27
처음에 블로그를 개설할 때는, 유익한 IT블로그를 만들겠다는 야심찬 포부가 있었는데, IT 포스트로 유입이 거의 전혀 없다시피 하다보니, 아무래도 잘 하지 않게 됩니다. 물론 유입이 없는 건 제 포스팅 역량 부족 + 개발 역량 부족 때문이지만서도요...ㅎㅎㅎ 무튼 개인적 호기심으로 만들어 보았던 티켓팅 자동화 매크로 코드입니다. 저는 업무외에 혼자서 코딩할때에는 거의 파이썬으로 합니다. 구현 알고리즘 티켓팅 자동화를 구현하기 위해서 3가지 방법을 고려할 수 있습니다. 1. 좌표를 설정하여 자동화 구현 2. 각 엘리멘트를 바로 실행시키는 웹 자동화 형식 3. 서버단에 예매정보 패킷 전송 좌표 설정법은, UI적으로 위치적 변화가 있을 경우 작동하지 않는다는 단점이 있습니다. 웹 자동화 형식은 좌표 변화에는 ..
-
[Apache Iceberg] 아이스버그 테이블 최적화 - BLOOM 필터Data - Iceberg 2025.02.04 20:40
Apache 아이스버그 테이블 최적화 - BLOOM 필터 개념블룸 필터 => 데이터 집합에 포함되어 있는지 확인하는 데 사용되는 데이터 구조 블룸 필터란?특정 값이 데이터 파일에 포함되어 있는지 빠르게 확인하기 위한 확률적 데이터 구조."포함되지 않음"은 항상 정확하지만, "포함됨"은 잘못된 결과를 반환할 수 있음(거짓 양성). Iceberg에서의 역할:파일 스캔 최적화: 불필요한 파일 스캔을 줄임.쿼리 성능 향상: 특정 컬럼 값이 포함된 파일만 읽도록 제한. 활성화:테이블 속성을 통해 특정 컬럼에 블룸 필터 적용 가능. 블룸필터를 사용할 때... 장점 - 쿼리 엔진은 블룸 필터를 활용하여, BLOOM이 0인 데이터 파일을 건너뛰어서, 데이터 파일을 읽는 속도를 더욱 높일 수 있다단점 ..
-
일본에서 중국 비자 신청방법, 비용, 총정리!!일본 살이 Tip 2019.05.27 23:58
목차 비자 발급 방법 비자 발급 시 필요한 준비물 비자 비용 비자대행센터 방문 픽업 후기 비자 발급 방법 저는 현재 일본 도쿄에 살고 있습니다. 중국에 다녀올 일이 있어, 눈물을 머금고 일본에서 비자를 신청하게 되었어요...ㅠ 일본인은 15일 이내의 일정이라면 무비자로 입국이 가능하지만, 저는 한국인이기 때문에 한국과 중국의 비자 협정을 따라야 하지요. 비자가 없으면 애초에 공항에서 비행기 수속조차 할 수 없답니다. 도착비자가 발급 가능한 몇몇 도시가 있는데, 그 도시들은 예외입니다. 하지만 도착비자는 사전에 발급받는 비자와 비교해서 훨씬 비싸기 때문에 시간적 여유가 있으시다면 미리 받아두시는 게 좋습니다. 일본에서 한국인이 중국 비자를 신청하는 방법은 2가지가 있습니다. 1. 일본 여행사의 비자접수대행..
-
[Apache Iceberg] 아이스버그 테이블 최적화 - 스토리지 최적화 편Data - Iceberg 2025.01.17 08:30
Apache 아이스버그 테이블 최적화 - 스토리지 최적화 편 스토리지 최적화남아있는 만료된 파일들테이블을 업데이트하거나 컴팩션 실행시 → 새 파일이 생성되지만, 과거에 생성된 문제의 스몰 파일들은 테이블의 과거 스냅샷으로부터 참조가 끊기지 않고 있어서, 삭제되지 않는다 이러한 불필요한 파일들을 정리하려면?→ 스냅샷을 주기적으로 만료시켜야하며. (= 더 이상 Time travel이 필요하지 않은 스냅샷들) → 스냅샷에서 참조가 끊긴 고아 파일들을 삭제해야 한다 그리고→ 메타데이터를 다시 쓰기 하여, 메타데이터 읽기 성능을 개선한다 스냅샷 만료시키기 spark.sql("CALL system.expire_snapshots('temp.test_compaction', TIMESTAMP ..