본문 바로가기

데이터엔지니어링

airflow Import MysqlDb 에러 해결과정

이전 글에서 airflow를 설치하고 mysql -> s3 -> redshift 순으로 데이터를 적재하는 dag를 실행하는데 아래와 같은 에러를 만났다.

해당 에러를 해결하기 위해

  1. docker ps를 통해 scheduler의 container id를 확인
  2. docker exec --user root -it {scheduler container id} sh 를 사용해서 root권한으로 접속

  1. 아래 3개의 명령어를 실행
    • sudo apt-get update
    • sudo apt-get install -y default-libmysqlclient-dev sudo apt-get install -y gcc
    • sudo pip3 install --ignore-installed "apache-airflow-providers-mysql"
  2. 하지만 그럼에도 불구하고 여전한 “ModuleNotFoundError: No module named 'MySQLdb'” 에러가 발생했다.
  3. 이것을 다시 해결하기 위해서 scheduler component뿐 아니라 webserver에도 위명령어를 실행하고 docker-compose.yaml파일 아래처럼 pymysql을 docker를 실행할 때 항상 설치하게끔 수정했다.

  1. 하지만 여전히 “ModuleNotFoundError: No module named 'MySQLdb'” 에러가 사라지지 않아서 이 글을 작성하기 전까지 1~2 일을 에러 해결(stackoverflow, git, docker재설치 등)을 하기 위해 노력하다 멘붕이와서 멈췄었다..
  2. 그렇게 시간이 지나고 "airflow 구축기" 라는 특강을 듣다가 강의가 끝날 즈음 강사님이 airflow와 slack을 연동하는 과정을 설명해주셨다. 여기에서 slack SDK가 사용되는 모든 곳(webserver, scheduler, worker)에 설치를 해야 airflow가 정상적으로 동작할 수 있다는 것을 알게 됐다.
    원래는 scheduler에 모듈을 설치하면 worker와 webserver는 같은 Python 가상환경을 공유하고 있기 때문에 문제없이 잘 실행된다 라고 알고 있었다. 그런데 어떤 이유(아직 원인 파악 못함)로 공유가 제대로 되지 않아서 worker에서도 위에 적은 설치과정을 반복하니 드디어 정상적이게 출력이 됐다. ㅜㅜㅜㅜ

에러를 해결하는 과정에서 나온 실패과정들 포함..

  1. 앞으로도 지금과 같이 에러가 생기면 해결하는 과정을 잘 적어놔야 다음에 비슷한 에러가 생겼을 때, 더 잘 해결할 수 있을것 같다.(어찌됐든 해결돼서 정말 다행이다......)

'데이터엔지니어링' 카테고리의 다른 글

Dataproc과 Dataflow  (0) 2024.06.01
EC2 인스턴스 위에 Airflow 설치  (3) 2024.02.29
Airflow설치 - docker기반  (0) 2023.12.14