Software Development/Data Engineering
-
[Kafka] 단일 파티션에 대한 고민Software Development/Data Engineering 2024. 5. 27. 14:23
이름에서 알 수 있듯이 단일 파티션 topic은 파티션이 하나만 정의된 Kafka topic입니다. 이 옵션은 몇 가지 제한 사항이 있습니다.1. consumer group 사이즈에 관계없이 한 번에 하나의 consumer group 멤버가 메세지를 처리할 수 있습니다.2. group member와 메세지 처리를 나눠서 할 수 없기 때문에 최대 처리량은 단일 consumer와 동일합니다.3. 2 이상의 consumer 그룹의 경우 1개 빼고 전부 유휴 상태로 있게됩니다. 처리량 및 확장성의 관점에서 아주 나쁜 선택입니다. 카프카의 파티셔닝 기능을 포기하는 것은 거의 필수인데, 드물게 예외케이스가 있긴 합니다. 모든 메시지가 동일한 파티션 내에 있으므로 해당 주제 내에서 메시지의 grobal (쓰기) o..
-
[Spark] Spark JDBC와 하이브 연동 이슈들.Software Development/Data Engineering 2023. 5. 5. 11:53
Spark JDBC로 RDB의 데이터를 가져올 수 있음. 이때 성능 이슈가 있을 수 있음. fetchsize 옵션 추가해서 사이즈를 키워볼 것. partition 옵션을 사용하여 병렬로 가져올 수 있도록 쿼리 짤 것. Spark JDBC로 데이터 가져올 때, Action 한 번만 호출하도록 신경쓸 것. Cache가 좋은 대안. Spark JDBC로 가져온 데이터를 Hive metastore와 연동하는 경우가 많음. 이때 스키마 이슈가 발생할 수 있음. saveAsTable로 Overwrite하면, table drop 후 create 함. 이때 기존 스키마 전부 날라감. 스키마 날라가도, 데이터는 잘 저장될 수 있음. spark.sql로 읽는다면 큰 문제없음. 그러나 여기에 하이브가 붙는다면, 하이브가 읽..
-
[Hive] 하이브 테이블에 Spark으로 적재 시, HQL로 읽을 때, 값이 Null로 조회되는 이슈.Software Development/Data Engineering 2023. 5. 2. 16:58
Spark 데이터프레임을 하이브 테이블에 저장할 때, 미리 생성한 테이블이 없을 경우(CREATE TABLE로 미리 테이블을 만들지 않았을 경우), 메타데이터를 spark에서 제공하는 값으로 업데이트를 한다. SHOW TABLE TBLPROPERTIES tbl_name; 로 테이블 속성을 확인해보면, 하이브에서 테이블을 만들때와 다른 속성이 조회될 것이다. 업로드된 값을 SparkSQL로는 조회가 잘됐는데, HiveQL로 조회하면, 대부분의 값이 null로 반환되었다. 값이 존재하는 것은 맞는데, Spark으로는 잘 읽어오고 Hive로는 잘 읽어오지 못하는 상황이다. 나의 문제와 비슷한 오류를 겪는 글을 발견했다. 발생한 원인은 다음과 같다고 한다. Hive queries output NULL value..
-
[Data Pipelines with Apache Airflow] 3. Airflow의 스케줄링Software Development/Data Engineering 2022. 8. 2. 21:00
해당 블로그의 내용은 책(Apache Airflow 기반의 데이터 파이프라인)을 요약 정리한 것입니다. 3.3 데이터 증분 처리하기 스케줄된 하나의 작업에서 처리해야 할 데이터 양을 크게 줄일 수 있기 때문에 전체 데이터 셋을 처리하는 것보다 효율적인 방식. 3.3.2 실행 날짜를 사용하여 동적 시간 참조하기 Airflow는 태스크가 실행되는 특정 간격을 정의할 수 있는 추가 매개변수를 제공. execution_date: DAG가 실행되는 날짜와 시간. 매개변수 이름과 달리 execution_date는 DAG를 시작하는 시간의 특정 날짜가 아니라 스케줄 간격으로 실행되는 시작 시간을 나타내는 타임스탬프. 3.3.3 데이터 파티셔닝 데이터 세트를 더 작고 관리하기 쉬운 조각으로 나누는 작업은 데이터 저장 ..
-
[Data Pipelines with Apache Airflow] 2. Airflow DAG의 구조Software Development/Data Engineering 2022. 8. 1. 21:00
해당 블로그의 내용은 책(Apache Airflow 기반의 데이터 파이프라인)을 요약 정리한 것입니다. 2.2.1 태스크와 오퍼레이터 차이점 오퍼레이터는 단일 작업 수행 역할. 오퍼레이터와 task는 거의 같은 의미를 가지지만, 태스크는 작업의 올바른 실행을 보장하기 위한 오퍼레이터의 wrapper 또는 manager. 2.3 Airflow에서 DAG 실행하기 Airflow는 스케줄러, 웹 서버, 데이터베이스의 세 가지 핵심 컴포넌트로 구성. Airflow 설치 pip install apache-airflow Airflow를 설치 후 메타스토어 초기화, 사용자 생성, DAG 폴더에 DAG 복사, 스케줄러 및 웹서버 시작. 1. airflow db init 2. airflow users create --u..
-
[Data Pipelines with Apache Airflow] 1. Apache Airflow 살펴보기Software Development/Data Engineering 2022. 6. 22. 00:19
해당 블로그의 내용은 책(Apache Airflow 기반의 데이터 파이프라인)을 요약 정리한 것입니다. Airflow의 주요 기능은 유연한 파이썬 프레임워크를 사용해 쉽게 데이터 파이프라인을 구축할 수 있게 해 주며, 최신 기술 환경에서 접하게되는 서로 다른 기술들을 연결. 1.1 데이터 파이프라인 소개 1.1.1 데이터 파이프라인 그래프 DAG 방향성 비순환 그래프, 방향이 있는데 순환은 안하는 그래프. 비순환 속성은 태스크 간의 순환 실행을 방지. 순환 의존성은 논리적 오류로 인한 교착상태로 이어질 수 있다. 1.1.2 파이프라인 그래프 실행 DAG는 파이프라인 실행을 위한 단순한 알고리즘을 제공한다는 이점을 제공. 1. 그래프 안에 태스크는 각각 개방된 상태(미완료)이며 다음과 같은 단계를 수행. ..
-
대용량 데이터를 수집하기 위한 생산성있는 웹 크롤러의 구조Software Development/Data Engineering 2020. 11. 5. 19:26
1. 웹 크롤러? 웹 스크래퍼? 웹 크롤링과 웹 스크래핑의 정의에 의하면 둘의 의미는 엄연히 다르다고 볼 수 있지만 위키피디아 정의에 따르면 웹 스크래핑이 웹 크롤링의 부분 집합이라 볼 수 있습니다. 웹 크롤링: 조직적, 자동화된 방법으로 월드 와이드 웹을 탐색하는 컴퓨터 프로그램이다. 웹 크롤러는 대체로 방문한 사이트의 모든 페이지의 복사본을 생성하는데 사용되며, 검색 엔진은 이렇게 생성된 페이지를 보다 빠른 검색을 위해 인덱싱한다. 또한 크롤러는 링크 체크나 HTML 코드 검증과 같은 웹 사이트의 자동 유지 관리 작업을 위해 사용되기도 하며, 자동 이메일 수집과 같은 웹 페이지의 특정 형태의 정보를 수집하는 데도 사용된다[1]. 웹 스크래핑: 웹 스크래핑은 페이지를 가져 와서 추출하는 것을 포함하여 ..