Data Engineer
-
concurrent.futuresData Engineer 2023. 12. 7. 00:29
현재 수행중인 프로젝트에서 Azure Blob Storage로부터 WAS에 이미지 데이터를 로드해야 하는 데 시간이 너무 오래 걸리는 현상이 발생했다. 로드하는 함수를 직렬 처리를 하는 대신에 병렬로 하면 어떨까하는 의문이 들어서 적용을 해보기로 했다. 그래서 이 참에, python의 병렬 함수 처리를 가능케 하는 모듈에 대해 알아보기로 했다. concurrent.futures 모듈은 비동기적으로 callable을 실행하는 고수준 인터페이스를 제공한다. Python에서 비동기 실행은 Thread 혹은 별도의 Process로 수행된다. 이 때, Thread로 실행되는 ThreadPoolExecutor와 Process로 실행되는 ProcessPoolExecutor가 존재한다. Executor 객체 class..
-
Copy() 메서드Data Engineer 2023. 12. 3. 22:40
기본적으로 얕은 복사를 수행. 얕은 복사는 객체 자체를 복사하지만, 내부 객체(리스트, 딕셔너리)는 참조로 유지 내부 객체까지 새롭게 복사하고 싶은 경우 copy 모듈의 copy.deepcopy() 를 사용해야 한다 복사 작업의 오버헤드 : 많은 양의 데이터를 다루는 경우, copy() 작업이 오버헤드를 초래할 수 있다. 특히 큰 데이터 구조를 자주 복사해야 하는 경우 성능에 영향을 미칠 수 있다. 가비지 컬렉션 및 메모리 사용 : 많은 객체가 생성되면 가비지 컬렉션의 작업이 늘어날 수 있다. 불필요한 객체가 많이 생성되면 메모리 사용량이 증가한다 불변 객체 : 숫자, 문자열과 같은 불변 객체인 경우 copy() 작업은 필요하지 않을 수 있다. 불변 객체는 값을 변경할 수 없기 때문에 일반적으로 복사가 ..
-
동기 작업과 비동기 작업Data Engineer 2023. 12. 3. 22:37
비동기 작업이 필요한 상황은 다음과 같이 다양합니다: 대규모 동시 요청 처리: 실시간 데이터 스트리밍: 웹 소켓 통신: 외부 API 호출: 데이터베이스 작업: 백그라운드 작업: 긴 처리 시간 요청: 이러한 상황에서 비동기 작업을 활용하면 애플리케이션의 성능을 향상시키고 사용자 경험을 개선할 수 있습니다. 동기 작업은 비동기 작업보다 간단하고 직관적인 모델로, 특정 상황에서 여전히 필요하며 유용합니다. 아래는 동기 작업이 필요한 몇 가지 상황입니다. 단순한 작업 처리: 데이터 무결성 유지: 순차적 작업 처리: 단순한 코드 구현: 데이터 무결성 유지: 종료 조건이 필요한 작업: 요약하면, 동기 작업은 간단하고 직관적이며 특히 순차적 작업 처리나 데이터 무결성 유지와 같은 상황에서 필요할 수 있습니다. 하지만..
-
Spark Structured Streaming_1Data Engineer 2023. 10. 29. 16:53
공식 문서에 따르면 Spark Streaming은 더 이상 버전 업데이트가 되지 않는 구식(?)이 되어버려서, Spark Structured Streaming 툴을 사용해야 한다. 오늘은 Spark Structured Streaming에 대해 알아보기로 한다. *공식문서 : https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html Structured Streaming Programming Guide - Spark 3.5.0 Documentation Structured Streaming Programming Guide Overview Structured Streaming is a scalable and fault-tol..
-
데이터 엔지니어링 수명 주기 전체에 걸친 기술 선택Data Engineer 2023. 9. 17. 23:48
데이터 기술 : 오픈 소스, 관리형 오픈 소스, 독점 소프트웨어, 독점 서비스 등 거의 모든 방식으로 사용할 수 있는 Turn-Key 제품으로 제공 "수명 주기 전체에 걸쳐 데이터를 운반하고, 최종 사용자의 요구에 따라 이를 제공하는 견고하고 신뢰성 높은 시스템 설계" - 아키텍처 : 비즈니스의 전략적 목표를 충족하는 데이터 시스템의 고수준 설계, 로드맵 및 청사진 데이터 엔지니어링 수명 주기 전반에 걸쳐 데이터 기술 선택 고려사항 팀의 규모와 능력 단순한 기술부터 복잡한 기술에 이르기까지 팀의 규모에 따라 솔루션에 할애할 수 있는 역량의 규모가 대략적으로 결정 Cargo-cult engineering : 소규모 데이터 팀이 대기업의 최첨단 기술에 관한 블로그 포스팅을 참고하여 모방하는 사례 소규모 팀이..
-
DMBOKData Engineer 2023. 9. 3. 17:44
비즈니스 메타데이터 : 비즈니스와 데이터 정의, 데이터 규칙과 로직, 데이터 사용 방법과 장소, 데이터 소유자 등 비즈니스에서 데이터가 사용되는 방식과 관련이 있다. 비즈니스 메타데이터는 데이터 엔지니어에게 데이터를 적절하게 사용하는 올바른 콘텍스트와 정의를 제공한다. 예를 들어, 데이터 엔지니어는 올바른 데이터를 사용해 비즈니스 메타데이터(데이터 사전 / 데이터 카탈로그)를 참조해서 어떻게 고객을 정의했는지 찾아볼 수 있다. * Data Catalog : 'highly scalable data discovery and metadata management service' 기술 메타데이터 데이터 엔지니어링 수명 주기 전반에 걸쳐 시스템이 생성하고 사용하는 데이터를 의미한다. 여기에는 데이터 모델과 스키마,..
-
Airflow 사용해보기Data Engineer 2023. 8. 21. 01:57
Docker와 Docker-compose(v2 이상) 설치를 진행 후, 진행해보았다. 우선 docker 환경에서 에어플로우를 실행하기 위해서는 docker-compose.yaml 파일이 필요하다. 필요한 기본적인 파일은 에어플로우 공식 사이트(https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html)에서 확인이 가능하며, 터미널에서 다음과 같은 명령어를 실행해주면 된다. curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.7.0/docker-compose.yaml' # Licensed to the Apache Software Foundation (ASF)..