iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
自我挑戰組

30 天程式學習筆記:我的自學成長之路系列 第 12

[DAY 12] Airflow 踩坑指南: Docker 佈署、服務介接、Power BI 與 Selenium 整合挑戰

  • 分享至 

  • xImage
  •  

在實際應用 Airflow 的過程中,我們難免會遇到各種挑戰。 本文將分享我在使用 Airflow 過程中遇到的四個困難,並提供相應的解決方案,幫助你更好地應對這些挑戰。

這些挑戰包括 Docker 佈署、服務介接、以及與 Power BI 和 Selenium 的整合等方面。

困難點 1:開源軟體的安裝與 Docker 佈署

在這次挑戰中,使用了三個開源軟體,並通過 Docker 來佈署環境。環境建置的過程其實是最耗時的部分,尤其是對於 Docker 不熟悉的情況下,需要花大量時間去熟悉和配置。

環境建置挑戰

在使用 Docker 時,遇到的一個主要挑戰是路徑同步問題。當我們需要對檔案進行操作或修改時,Docker 容器內的路徑與本地端的實際路徑如何同步,需要深入研究才會知道。此外,當在 Docker 中安裝應用程式或資料庫時,連接所需的參數也會有所不同。例如,主機名稱不能直接使用 localhost,而是需要使用 host.docker.internal。這些細節如果不注意,就容易導致錯誤,並需要花時間去排查。

解決方案

我花了一些時間深入學習 Docker 的使用方式,包括如何正確配置DNS名稱,如何同步本地端與容器內的檔案路徑,這些都成為我後續開發過程中的關鍵知識點。

困難點 2:介接不同服務與設置環境參數

在整合不同的服務時,特別是當我們需要將 Airflow 與 Email 或 PowerBI 等服務連接時,會涉及許多參數的設置。

主要挑戰

這些參數包括金鑰申請、權限設定、端口連接、SSL 加密等。而這些設定往往會交錯影響。一旦某個環節出錯,就需要反覆嘗試不同的配置,才能找到不會出錯的組合。這個過程非常耗時,因為可能要逐一排查所有可能的設定,直到找到正確的組合。

解決方案

為了解決這些問題,我投入了大量時間進行配置測試,並參考了大量文件和社群資源。這使我更深入理解了這些服務的連接原理,並能夠有效處理潛在的錯誤。

困難點 3:Airflow 與 PowerBI 的整合挑戰

我原本計劃在 Airflow 的流程中加入 PowerBI 自動刷新功能,目的是在任務執行後自動刷新 PowerBI 的資料集。為此,我嘗試了自定義 Operator 的方法,但最終因為授權問題(HTTP 401 錯誤)而未能成功。

主要挑戰

Airflow 本身不支援 PowerBI 的操作器,因此我參考了網路上的一些自定義插件,並進行了調整。然而,由於 PowerBI 的 API 授權機制較為複雜,即使按照指引進行設定,最終還是遇到了授權失敗的情況。

解決方案

儘管未能成功將 PowerBI 完整整合進 Airflow,但我學到了許多有關 API 授權和自定義插件的知識。這部分的經驗將在未來的開發中對我有所幫助,我也會持續研究這方面的整合方法。

困難點 4:Selenium 與 Airflow 的整合

在這次挑戰中,我嘗試將 Selenium 自動化測試工具整合到 Airflow 流程中,用於自動化下載 Metabase 報告。然而,由於 Selenium 無法直接在 Airflow 中執行,我最終選擇了在 Airflow 外部進行操作。

主要挑戰

要在 Airflow 中使用 Selenium 需要先建立一個 Selenium Docker 容器,並配置遠端 Selenium 驅動程序。此外,還可能需要自定義插件來處理與 Selenium 的交互。在短時間內,要完成這些步驟並進行調試是非常困難的。

解決方案

由於時間限制,我選擇暫時在 Airflow 外部執行 Selenium 腳本,這雖然不是理想的解決方案,但確保了整個流程的順利運行。我計劃在未來深入研究這個問題,並嘗試將 Selenium 正式整合進 Airflow 流程中。

結語

這次的實做讓我對 Airflow、Docker 以及各種服務整合有了更深的理解。過程中遇到的困難不僅讓我學到了許多新知識,也讓我更加意識到在實際專案中細節的重要性。希望這些經驗能對其他有類似需求的開發者有所幫助。


上一篇
[DAY 11] Airflow 實戰演練(2):完整 Python 程式碼實現數據工作流程
下一篇
[DAY 13] 告別混亂!教你用 Python 一次更改大量檔案名稱
系列文
30 天程式學習筆記:我的自學成長之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言