데이터 엔지니어링
-
[Airflow] jinja_template을 활용한 날짜 동적 변수 활용 하는 법(동적 datetime, ds변수 UTC안되는 것 해결법)데이터 엔지니어링/AirFlow 2022. 9. 18. 18:15
안녕하세요 오늘은 회사에서 airflow를 사용하고 있는데 쿼리를 execution_date별로 날짜를 동적으로 설정 해야하는 상황이 발생하여 동적 date변수를 조작해 보는 airflow 코드를 만들어 볼 예정입니다. datetime 동적 변수 만드는데 삽질을 좀 많이해서 삽질 과정도 좀 같이 넣어 볼게요. 먼저, 동적 변수를 만드는 첫 번째 과정은 Jinja template을 이용하는 것입니다. Jinja template에 있는 동적 변수 이용하기 먼저 airflow는 python 코드로 되어있기 때문에 jinja template을 내장하고 있습니다. airflow에서는 Jinja_template에 미리 정의 되어있는 변수를 제공합니다. 홈페이지에 가보시면 자세히 나와있습니다. 사용법은 아래 코드를 ..
-
[HIVE]Hive란 2부 - 서비스들 설명데이터 엔지니어링/Hive 2022. 9. 18. 17:09
메타스토어 - 메타데이터(스키마) 저장하는 데이터베이스 Hadoop은 HDFS를 기반으로 동작한다, 즉 빅데이터용 저장소 라는 얘기다. Hive는 이를 SQL기반으로 편리하게 데이터 조작을 가능하게 해주는 툴이다. 하지만 SQL을 이용할려면 컬럼이나 스키마 같은 정보가 있어야한다. 그런데 SQL 을 날릴때마다 스키마 정보를 만들어서 사용하면 어떻게 할까 여간 불편한게 아니다. 그래서 스키마 정보를 저장해서 SQL을 날릴때 이 정보를 가지고 쿼리가 동작하게 되는데 이것이 메타스토어이다. 그래서 메타스토어는 DB로 만들어야 한다. 즉 메타스토어는 스키마 정보를 가지고 있는 데이터베이스이다. 아래 3가지 형태로 관리가 가능하다. 임베디드 별도의 데이터 베이스를 구성하지 않고 더비 DB를 이용 한번에 하나의 유..
-
[HIVE]HIVE란? 1부 - 소개 및 버전별 특징데이터 엔지니어링/Hive 2022. 9. 18. 16:53
Hive란? 하둡 에코시스템 중에 데이터를 모델링하고 프로세싱하는 데이터 웨어하우징용 솔루션 SQL 유사 언어인 HQL을 도입하여 쿼리를 날려 데이터 조회 및 조작을 할 수 있다. Catalog를 제공하여 RDB 데이터베이스 처럼 조작 가능하다. 메타스토어를 조작할 수 있다 메타스토어가 존재 RDB와는 다르게 미리 스키마를 정의하고 그 틀에 맞게 데이터를 입력하는 것이 아닌, 데이터를 저장하고 거기에 스키마를 입히는 것이 가장 큰 특징 Hue와 연계하여 ADD-hoc 쿼리를 실행 시킬 수 있다. HIVE 구성요소 UI - 사용자가 쿼리 및 기타 작업을 시스템에 제출하는 사용자 인터페이스 (ex : CLI, Beeline, JDBC 등) Driver -쿼리를 입력받고 작업을 처리, 사용자 세션을 구현하고,..
-
[Airflow] hook이란? (hook을 사용하여 mysql to csv 패턴 실습)데이터 엔지니어링/AirFlow 2022. 9. 4. 21:38
Hook이란? Hook이란? 미리 정의 된 것이 아니라 커스텀하게 로직을 구현하고 싶을 때나 외부 시스템의 푸시 작업 흐름을 만들고 싶을 때도 사용한다. 보통pythonOperator로 작업을 실행 시키고 python 함수 코드 안에서 다른 로직을 쉽게 구현할 수 있게 해주기 위해 사용한다. pip로 다른 플러그인을 다운받아 사용도 하여 굳이 hook을 사용할 필요는 없다. 그냥 쉽게 접근이 가능하게 하는 용도 외에는 없는 것 같다. Mysql 커넥터 만들기 실습을 위해 커넥터 먼저 만들자 mysql 깔려 있다고 가정하고 하는 것이다. + 버튼을 눌러 커넥터 만들기 Provider 설치 apache-airflow-providers-mysql — apache-airflow-providers-mysql Do..
-
[Airflow] airflow설치 방법(with ubuntu, mysql)데이터 엔지니어링/AirFlow 2022. 9. 4. 17:51
mysql 설치 # 시스템 업그레이드 sudo apt update && sudo apt upgrade -y # mysql 서버 설치 sudo apt-get install -y mysql-server # mysql enble 설정 sudo systemctl enable mysql # mysql 서버 sudo systemctl status mysql ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:> Active: active (running) since Sun 2022-09-04 16:05:53 KST; 5s ago Main PID: 3169 (mys..
-
[Airflow]Catch up, Backfill 알아보기데이터 엔지니어링/AirFlow 2022. 9. 4. 14:04
Airflow를 운용하다 보면, 재실행을 하거나 현재 시점 보다 과거의 배치 작업을 주기적으로 진행을 해야하거나, 실행을 했더라도 특정 조건으로 해당하는(실패나, 건너뜀 등)을 골라내서 재실행 하고 싶을 때가 있다. 바로 작업을 주기적으로 하는 관점이기 때문인데 이번 포스팅에서는 이런 작업들을 airflow에서는 어떻게 관리하고 다시 재 작업을 할 수 있을지 알아볼려고 한다. Catch Up python 코드로 DAG를 작성할 때 Dag 속성 안에 Catch up이라는 인수를 둘수 있다. 기본적으로 false가 되어있고, True로 주게 되면 Catch up이 활성화 되게 된다. with DAG( dag_id="example_dag", start_date=datetime(2021, 10, 9), max_..
-
[Embulk] yml 파일 작성 형식 알아보기 Liquid template 이용하여 yml 파일안에서 변수 사용하기데이터 엔지니어링/Embulk 2022. 8. 30. 22:30
안녕하세요 까치입니다. 회사에서 Embulk를 이용하여 데이터를 s3에 올리는 작업을 하고 있는데 s3에 날짜 별로 폴더를 만들 수 있는지 공부 중에 있었습니다. 방법은 찾았는데 전체적으로 Embulk에서 yml파일을 작성하는 법과 변수를 만들어 사용하는 법 파일을 모듈로 작성하여 사용하는 법에 대해 알아 보려고 합니다. 홈페이지 참조하기 Embulk 공식 홈페이지에 yml파일을 작성하는 방법에 대해 나와있습니다. 아래의 주소로 들어가서 확인 이 가능합니다. 내용을 간략히 살펴 보면 Embulk: Configuration Embulk configuration file format Embulk uses a YAML file to define a bulk data loading. Here is an exam..
-
[RabbitMQ] RabbitMQ 설치하기(with centos7)데이터 엔지니어링/RabbitMQ 2022. 8. 23. 20:49
기본 패키지 다운로드 RabbitMQ 를 설치 하려면 eple(Extra Packages of Enterprise Linux) 설치가 필요하다. RabbitMQ는 erlang으로 작성 되어있어 erlang도 다운받아야 한다. yum -y upgrade # eple(Extra Packages of Enterprise Linux) 설치 yum install -y epel-release wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm sudo rpm -Uvh erlang-solutions-1.0-1.noarch.rpm # rabbitMQ는 erlang 으로 작성되어있어 erlang 다운로드 yum install -y er..