mildsalmon

mildsalmon

흔치않고, 진귀하다.

24년에 읽은 것 정리

7분

A. [김지수의 인터스텔라] “질병없이 오래 살고 싶다면… 새해엔 이것만 피하라” 美 최정상 장수의학자의 일침 노화와 관련된 기능 저하(허약함, 만성 질환, 기억력 및 거동 능력 저하 등)는 자연스러운 현상이 아니다. 설탕과 녹말을 너무 많이 섭취하고 앉아서 생활하기 때문에 벌어지는 현상이다. 하루에 12 ~ 16시간 동안 식사를 중단하는 간헐적 단식으로 필요한 모든 …

OOP를 곁들인 Data Quality Check

7분

0. To-DoData Warehouse에 Data를 적재하기 전후로 필요한 Data가 잘 적재되어 있는지, 적재한 데이터가 잘 적재되었는지를 검증할 필요가 생겼다. [사진 1]로 예를 들면 DW Table 9를 적재하기 전에는 DL Table 1, DL Table 2 데이터가 누락되지 않았는지 확인해야 한다. DW Table 9를 적재한 후에는 잘 적재되었는지 확인해야 한다. [사진 1] DW에 …

함께 자라기

16분

함께 자라기의 핵심은 현재 자라고 있는지에 대한 중요성입니다. 자기계발은 복리로 돌아온다는 점을 강조하며, 이율을 높이고 지속적인 투자를 고민해야 한다고 말합니다. 또한, 복리를 만들기 위해 자신이 이미 갖고 있는 것들을 잘 활용하고 외부 자극을 받아 자기화하는 것이 중요하다고 언급합니다. 달인이 되려면 의도적 수련과 적절한 피드백이 필요하며, 전문성 형성을 위해 타당성과 피드백의 중요성을 강조합니다. 실력을 높이기 위해서는 의도적 수련이 필수적이며, 적절한 난이도와 피드백을 유지해야 한다고 말합니다. 또한, 실패를 통해 학습하고 자신의 실력을 높여주는 도구와 환경을 조성해야 한다고 강조합니다. 마지막으로, 실수는 예방하는 것이 아니라 관리해야 한다고 말하며, 실수 문화에 대해 설명합니다.

Diving Into Delta Lake - Unpacking The Transaction Log

13분

이 블로그 포스트에서는 Delta Lake의 핵심 개념인 트랜잭션 로그에 대해 설명하고, 파일 수준에서의 동작 방식과 동시 읽기 및 쓰기 문제에 대한 해결책을 제공합니다. Delta Lake 트랜잭션 로그는 Delta Lake 테이블이 생성된 이후에 수행된 모든 트랜잭션을 기록하는 중앙 레포지토리 역할을 합니다. 이를 통해 사용자는 항상 최신 데이터 뷰를 볼 수 있으며, ACID 트랜잭션과 확장 가능한 메타데이터 처리, 타임 트래블 기능 등을 지원합니다. 또한 트랜잭션 로그는 Delta Lake의 원자성을 보장하는 메커니즘으로 작용하며, 파일 추가, 제거, 메타데이터 업데이트 등의 단계로 트랜잭션을 세분화하여 로그에 기록합니다. 이를 통해 Delta Lake는 테이블의 상태를 정확하게 추적하고, 시간 여행 기능을 지원하며, 데이터 파일을 제거해도 테이블의 상태를 유지할 수 있습니다. 또한 Delta Lake는 효율적인 읽기를 위해 체크포인트 파일을 사용하여 테이블의 상태를 빠르게 재현할 수 있습니다.

Spark 맛보기 - 4. RDD, DataFrame, DataSet API

26분

RDD(Resilient Distributed Dataset)는 Apache Spark의 핵심 개념으로, 분산 환경에서 병렬로 처리될 수 있는 불변의 데이터 컬렉션이다. RDD는 불변성, 탄력성, 분산 처리의 특징을 가지며, transformation과 action을 통해 작업을 수행한다. RDD는 Spark의 초기 데이터 추상화 모델이며, DataFrame과 Dataset과 같은 고수준의 추상화가 도입되었다. RDD의 주요 문제로는 사용자가 연산 함수 안에서 무엇을 하는지 스파크가 알 수 없었고, 데이터 압축 기술을 적용하기 어려웠다. Spark의 구조 확립을 위해 일상적인 패턴을 사용하여 연산을 표현하고, 지원 언어에서의 API 사용이 가능해졌다. 스파크의 핵심 장점과 이득구조를 갖추면 더 나은 성능과 공간 효율성을 얻을 수 있다. Spark DataFrame은 이름 있는 컬럼과 스키마를 가진 분산 인메모리 테이블의 역할을 하며, 스파크의 기본 데이터 타입과 정형화 타입을 지원한다. 스키마와 데이터 프레임을 미리 정의하는 것은 스파크의 성능과 비용을 개선하는데 도움이 된다.

Spark 맛보기 - 3. transformation, action, lazy evaluation

5분

Spark의 RDD는 불변성을 가지고 있으며, 변경이 필요할 때는 새로운 RDD를 생성하는 transformation 과정을 거칩니다. transformation은 lazy evaluation으로 실행 계획을 최적화하고, narrow transformation은 하나의 입력 파티션을 연산하여 하나의 결과 파티션을 내놓으며, wide transformation은 다른 파티션의 데이터를 읽어 들여서 합치고 디스크에 쓰는 등의 작업을 합니다. action은 모든 transformation의 평가를 발동시키며, show(), take(), count(), collect(), save()와 같은 연산을 수행합니다. Lazy Evaluation은 쿼리 최적화와 데이터 내구성을 제공하며, 효율성, 최적화, 고비용 연산의 최소화를 특징으로 합니다.

[requests 라이브러리] 내가 아는 timeout은 너무 추상적이였어..

31분

requests 라이브러리를 사용하여 python에서 HTTP 통신을 할 때 timeout 파라미터를 사용하여 응답을 기다리는 시간을 제한할 수 있다. 그러나 timeout 값이 정확히 어떤 순간을 의미하는지에 대해 혼동이 있을 수 있다. 이 글에서는 timeout 값이 client에서 server의 응답을 받는 시간을 의미한다고 가정하고, 실제 코드를 통해 그 동작을 확인해보았다. 또한, ConnectionTimeoutError와 ReadTimeoutError가 어디서 발생하는지와 timeout을 초과하는 경우에 왜 에러가 발생하지 않는지에 대해서도 알아보았다.

Spark 맛보기 - 2. 스파크 애플리케이션 개념

2분

스파크 애플리케이션은 스파크 드라이버 프로그램과 클러스터의 실행기로 구성되며, SparkSession 객체를 통해 스파크 연산을 수행하는 API를 사용하여 프로그래밍할 수 있습니다. 스파크 애플리케이션은 여러 개의 job으로 변환되고, 각 job은 DAG로 변환되어 실행 계획이 됩니다. 연산은 여러 스테이지로 나뉘며, 각각의 스테이지는 최소 실행 단위인 스파크 task로 구성됩니다. SparkContext는 Spark 애플리케이션의 진입점이며, SparkSession은 SparkContext, SQLContext, HiveContext 등을 통합한 단일 진입점입니다.

Spark 맛보기 - 1. Spark란?

6분

Apache Spark는 대규모 분산 데이터 처리를 위해 설계된 통합형 엔진으로, 속도, 사용 편의성, 모듈성, 확장성이라는 핵심 특성을 가지고 있다. Spark는 메모리 저장소를 지원하여 MapReduce보다 훨씬 빠르게 동작하며, MLlib, Spark SQL, Spark Streaming, GraphX 등의 라이브러리를 포함하고 있다. Spark는 스파크 코어를 중심으로 다양한 컴포넌트들이 함께 동작하며, 분산 아키텍처를 통해 데이터를 처리하고 분석하는 통합 엔진으로 사용된다.

[서평] 세상 끝의 카페

1분

이 책은 생각할 거리를 제공하며, 편한 것을 추구하는 우리에게 새로운 아이디어와 기회를 얻기 위해 새로운 방향으로 나아가야 함을 알려줍니다. 또한, 만족스러운 삶과 열심히 사는 사람들의 영향력에 대해 이야기하며, 자신이 진정으로 원하는 일을 조금씩 해나가야 한다는 메시지를 전달합니다.

[Airflow 개선 - DAG Factory] 2. DAG Factory

20분

DAG Factory 설계 방향과 UML 다이어그램, 그리고 코드 구조를 설명하는 글입니다. 추상화된 인터페이스를 사용하지 않은 이유와 DAG Factory의 생성자를 조금씩 나눠서 구현하는 방법을 제시합니다.

[Airflow 개선 - DAG Factory] 1. 왜 하는가?

11분

DAG script 코드에서 중복 코드 문제가 발생하여 Design Patterns을 활용하여 개선하려고 한다. DAG Factory를 구현하여 중복 코드를 해결하고, 변경 포인트를 분산시키는 문제를 해결하기 위해 Factory Method와 Abstract Factory Patterns을 사용한다. 이를 통해 코드의 효율성을 높이고 반복 작업을 줄일 수 있다.

[Airflow 파먹기] airflow dags list

19분

이 글은 Apache Airflow의 ActionCommand와 dag_list_dags 함수를 살펴보는 내용입니다. ActionCommand는 CLI에서 사용하는 명령어 중 하나로, dag_list_dags 함수는 해당 명령어를 실행했을 때 모든 DAG를 보여주는 함수입니다. 이 함수는 CLI에서 실행되며, 출력 결과는 DAG의 이름, 파일 경로, 소유자, 일시정지 여부 등이 포함됩니다. 또한 이 글에서는 decorator와 alias 등에 대한 이야기도 포함되어 있습니다.

[Airflow 파먹기] airflow standalone

19분

Airflow Standalone Command is examined in this content, which allows running all components of Airflow under a single parent process for local development. The code includes the use of @classmethod instead of @staticmethod and the absence of a separate function for entrypoint. The CLI commands for initializing the database and starting the web server and scheduler are executed sequentially. Additionally, the code includes a print_output() function that uses print instead of logger to output colored text.

[Airflow 파먹기] cli_parser

15분

get_parser() 함수는 Airflow CLI의 command line argument parser를 생성하는 함수이다. 이 함수는 lru_cache를 사용하여 속도를 높이고, argparse.ArgumentParser를 상속받는 DefaultHelpParser를 사용하여 help message를 표시한다. 이 함수는 DAG_CLI_DICT 또는 ALL_COMMANDS_DICT를 사용하여 subcommand를 생성하고, core_commands에서 자주 사용하는 명령을 포함한다.

[Airflow 파먹기] main - configuration

24분

해당 코드는 Airflow의 환경설정을 담당하는 configuration 파일의 내용을 로드하여 객체로 생성하는 과정을 나타내고 있다. 이를 위해 default_airflow.cfg 파일에서 필요한 값을 읽어오는데, 이 파일은 환경변수를 포함하여 Airflow의 다양한 설정값을 담고 있다. 이 코드는 Airflow의 동작을 이해하는 데 중요한 역할을 하며, Airflow의 소스 코드를 이해하는 데 도움이 될 수 있다.

[Airflow 파먹기] 시작 !

[Airflow 파먹기] 시작 !

2분

앞으로 작성할 글들에서 Airflow 코드가 어떻게 구성되어 있고 어떻게 동작하는지 알아보려고 한다. 즉, Airflow가 어떤 것인지에 대해서는 다루지 않는다. Airflow에 대한 설명은 추후에 진행하는 걸로 하고, 코드를 뜯으러 가보자

# 12. 준비, 조준, 발사

1분

12. 준비, 조준, 발사 조준하고 숨 참고 쏴. 군대에서 사격할 때마다 들었던 말이다. 우리는 보통 발사(행동)를 가장 마지막에 한다. 최선을 다해서, 최선의 결과를 위해서 말이다. 그런데 현실에서 단 한 번의 행동으로 최선의 결과를 만들 수 있을까? 군대에서도 마찬가지였다. 단 한 번의 시도로 20발을 전부 표적지에 명중시키는 사람은 드물었다. 그래서 우리는 …

11. 조금씩 알아간다는 건

2분

11. 조금씩 알아간다는 건#나 나는 나에 대해 얼마나 알고 있을까? 사실 나도 나를 잘 모르겠다. 과연 나는 나를 명확하게 정의할 수 있을까? 예전에는 흑백논리처럼 이분법적으로 나눌 수 있다고 생각했다. 그래서인지 한쪽으로 너무 편향되게 나를 정의했다. 그러나 세상은 이분법적으로 완벽하게 나눠질 수 없다. 춥다와 덥다 그사이에 애매모호한 단계를 Fuzzy Theory라고 한다. …

8. 망한 행사에 대한 회고

1분

8. 망한 행사에 대한 회고이번 한 주는 많은 도전이 있었다. 그중 가장 기억에 남는 것은 스시런톡이다. 스시런톡은 간단한 토크 형식으로 진행되는 사내 행사이다. 세미나보다는 가벼운 형식으로 진행하는 지식 공유의 장을 만들고 싶었다. 첫술에 배부를 수는 없겠지만, 많이 아쉽긴 했다. 어떤 사람은 괜찮았다고, 처음이 제일 어렵다고 위로와 긍정적인 말을 해주었지만, 어떤 …

6. 계획대로

1분

6. 계획대로과거에 많은 것을 철저하게 계획했다. 그래서 많은 것들이 완벽하게 계획대로 움직였다. 친구들이랑 놀러갈때도 데이트를 할때도 마찬가지였다. 시간 단위로 계획하고 예상치 못한 일이 발생할 것을 대비해서 어느 정도 여유 시간도 계획하고 비와 같은 외부 변수도 고려해서 전혀 다른 계획을 2~3가지 정도 만들었다. 이 정도 했는데 계획이 어그러질 일이 있을까? 대부분의 …

5. 완벽한 나

2분

5. 완벽한 나나는 대학생 시절부터 '무엇이든 완벽하게 해야 한다', '완벽하게 하지 못한다면 안 하는 것만 못하다'라는 생각하면서 스스로를 몰아붙였다. 이런 생각이 바람직하지 못하다는 것을 알게 된 지금도 가끔 비슷한 생각을 하는 실수를 저지르곤 한다. 생각해보면 사람은 불완전한 존재이기에 완벽해질 수 없다. 당연함을 거스르고자 했던 나를 되돌아보니 생각보다 많은 부분이 망가져 …