【Airflow】【トラブル】Apache Airflow に関するトラブル

■ はじめに

https://dk521123.hatenablog.com/entry/2021/07/18/004531

で発生したトラブルを纏めておく。

目次

【1】エラー「ModuleNotFoundError: No module named 'airflow.providers'」が表示
【2】エラー「DAG import Error / SyntaxError: (unicode error) 'utf-8' codec can't decode」が表示

【1】エラー「ModuleNotFoundError: No module named 'airflow.providers'」が表示

「airflow db init」実行時に
エラー「ModuleNotFoundError: No module named 'airflow.providers'」が
表示される。

解決案

足りないモジュールを再インストール(※)する

※ アンインストール後にインストールする

コマンド例

sudo pip uninstall apache-airflow-providers-sqlite
sudo pip install apache-airflow-providers-sqlite

# エラー「ModuleNotFoundError: No module named 'airflow.providers.ftp'」
sudo pip uninstall apache-airflow-providers-ftp
sudo pip install apache-airflow-providers-ftp

# エラー「ModuleNotFoundError: No module named 'airflow.providers.imap'」
sudo pip uninstall apache-airflow-providers-imap
sudo pip install apache-airflow-providers-imap

【2】エラー「DAG import Error / SyntaxError: (unicode error) 'utf-8' codec can't decode」が表示

https://dk521123.hatenablog.com/entry/2021/10/06/141323

などにおいて、以下「Pythonコード一部」のように、
日本語のメッセージでテストした際に、
Web UI側でエラー「DAG import Error(1)」が表示された。

Pythonコード一部

def send_email_for_success(context):
  ''' Callback for success
  '''
  print("Fire send_email_for_success")
  try:
    email_success = SnsPublishOperator(
      task_id='publish_sns_success_task',
      target_arn='arn:aws:sns:us-west-2-xxxxxxx',
      subject='これはタイトルです', # ここでエラー
      message='こんにちは世界'
    )
    return email_success.execute(context=context)
  except Exception as ex:
    print("[Error] " + str(ex))
    raise ex

エラー内容(DAG import Errorを展開した際のメッセージ)

Broken DAG [/user/local/airflow/dags/hello.py] Traceback (most recent call last):
   File "<frozen importlib._bootstrap_external>", line 791, in source_to_code
   File "<frozen importlib._bootstrap_external>", line 219, in _call_with_frames_removed
   File "/user/local/airflow/dags/hello.py", line 45
SyntaxError: (unicode error) 'utf-8' codec can't decode bytes 0x83 in position 8: invalid start byte

原因

* DAGファイル(Pythonコード)のファイル形式が、SJISで保存されていたため

解決案

* DAGファイル(Pythonコード)のファイル形式を「UTF-8」で保存しなおした。

関連記事

Apache Airflow ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2021/07/18/004531
Apache Airflow ~ 通知あれこれ編 ~
https://dk521123.hatenablog.com/entry/2021/10/06/141323