본문 바로가기
Database

Airflow Task의 BQ Job 다루기

by BTC_최총무 2023. 9. 28.

베하~ 반갑습니다!!

 

인사통의 BTC_김회장, 최총무입니다!!

 

 

오늘은 Airflow Task를 통해 진행된 Bigquery의 Job을 다뤄보겠습니다!

 

오늘은 평소보다 조금 간략한 내용이 될 수 있어요 하지만 생각보다 자주 사용하게 될거에요!

개요

  • Airflow Task의 수행 BQ job id 확인하기
  • 확인한 job id를 통한 활용

1. Airflow Task의 수행 BQ job id 확인하기

Airflow를 통해 BQ 명령을 수행시키는 경우에 주의할 점이 있습니다.

바로 BQ Slot 사용량입니다.

 

개인이 아닌 회사 수준의 환경에서는 BQ를 사용하는 경우 Slot을 Reservation형태로 사용하는 경우가 많습니다..

이런 경우 Airflow를 통해 Scheduling된 작업을 진행할 때 항상 BQ의 Slot 사용량을 체크해야 합니다.

 

Reservation 형태는 비용이 추가적으로 나오지는 않지만, 예약 slot 양에따라 작업이 지연될 수 있기 때문에 Airflow의 Scheduling된 Dag들이 지연되어 문제가 될 수 있기 때문입니다.

 

데이터 엔지니어라면 Dag의 수행 시간을 체크하여 중요도에 따라 일부 Dag를 Markfailed 처리하여 Slot을 집중해야 할 수도 있습니다.

이때, 단순히 Airflow의 Task만 Fail하더라도 이미 명령이 전달된 Bigquery의 Job은 따로 옵션을 주지 않는 이상 그대로 수행되기에 따로 Cancel해주는 작업이 필요합니다.

 

이때, BQ의 Job id를 확인할 수 있는 방법은 다음과 같습니다.

 

1. BQ 콘솔에서 Project history 확인하기

첫번째 방법은 Bigquery 콘솔에서 Project history를 뒤져보는 것입니다.

여기에서 팁은 검색 시 시간이나 작업내용 (ex)쿼리 내용), owner 등을 지정해서 범위를 크게 줄일 수 있습니다!

 

2. logging.info가 포함된 Custom operator 사용

XCom에서 job ID를 가져오는 내용이 포함된 Operator를 생성하여 사용할 수 있습니다.

Dag 수행과정에서 id를 자동으로 반환해주기 때문에 편리하지만

Dag를 수정할 수 있는 권한이 필요하며, 이미 구축된 환경에서는 어려울 수 있습니다.


2. 확인한 job id를 통한 활용

이렇게 확인한 Job id는 여러가지로 활용할 수 있습니다!

 

위에서 말씀드린대로 지연되는 Job을 원할히 하기위해 일부 Job을 Cancel 시키거나

Job 수행과정에서 사용되는 Slot 사용량을 체크하는 쿼리를 사용하는 등의 방법이 있습니다.

 

Bigquery 명령줄 도구를 통해 bq cancel 명령어로 취소시키거나 앞서 말씀드린 콘솔에서 Project history에서도 특정 job을 찾아 cancel 시킬 수 있습니다! 자신에게 더욱 편한 방법으로 실행시키면 될것 같아요!

또한 INFORMATION_SCHEMA.JOBS_BY_PROJECT 쿼리를 통해 SELECT를 통해 쉽게 해당 JOB에 대한 수행시간, Slot 사용량 등 또한 체크할 수 있습니다!


오늘도 함께 배우시느라 고생 많으셨습니다.

 

오늘 가장 중요했던 내용은 Airflow Task를 Cancel시켜도

BQ의 JOB은 따로 Cancel이 되지 않는다는 점이었습니다!!

 

내용만 알고 있다면 Cancel시킬 방법은 사실 많이 있습니다.

하지만 취소되지 않는다는 사실 자체를 몰랐다면 문제가 될 수 있겠죠?

그럼 다음시간에도 유용한 정보를 안고 돌아오겠습니다!!

 

모두 베빠~

'Database' 카테고리의 다른 글

[Database] AQueryTool 사용 방법(1)  (0) 2023.10.24
구글 태그 매니저 (Google Tag Manager)  (0) 2023.10.12
GA4 (Google Analytics 4)  (1) 2023.09.27
MyBatis 성능 개선포인트  (0) 2023.09.27
트랜잭션의 이해(ACID)  (0) 2023.09.15

댓글