第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Jupyter Notebooks 和 Papermill 輔助的 Airflow 中的 ETL

Jupyter Notebooks 和 Papermill 輔助的 Airflow 中的 ETL

互換的青春 2024-01-27 15:26:55
所以我的問題是,我在 Airflow 中構(gòu)建 ETL 管道,但首先在 Jupyter 筆記本中真正開發(fā)和測試提取、轉(zhuǎn)換和加載功能。因此,我最終總是在 Airflow Python 操作員代碼和 Jupyter 筆記本之間來回復(fù)制粘貼,效率非常低!我的直覺告訴我,所有這一切都可以自動化。基本上,我想在 Jupyter 中編寫我的提取、轉(zhuǎn)換和加載函數(shù),并讓它們保留在那里,同時仍在 Airflow 中運行管道并顯示提取、轉(zhuǎn)換和加載任務(wù),并進行重試和 Airflow 提供的所有好東西提供開箱即用的功能。Papermill 能夠?qū)P記本進行參數(shù)化,但我真的想不出這對我的情況有什么幫助。有人可以幫我把這些點聯(lián)系起來嗎?????
查看完整描述

4 回答

?
慕俠2389804

TA貢獻1719條經(jīng)驗 獲得超6個贊

具有任意數(shù)量的從屬筆記本(用作模板)的單個主 Jupyter 筆記本,使用 順序執(zhí)行papermill.execute_notebook,應(yīng)該足以自動化任何 ML 管道。

要在管道階段之間傳遞信息(從一個從屬筆記本到下一個),可以使用另一個 Netflix 包 ,它scrapbook允許我們在從屬筆記本中記錄 python 對象(因為它們是由 處理的papermill),然后檢索這些對象來自管道主機中的從屬設(shè)備(保存使用scrapbook.glue并讀取 -?scrapbook.read_notebook)。

從任何已完成的階段恢復(fù)也是可能的,但它需要將前一階段保存的必要輸入存儲在可從主節(jié)點訪問的可預(yù)測位置(例如,在本地主 JSON 文件或 MLflow 中)。

  • 備擇方案

由于管理成本(5 個容器,包括 2 個數(shù)據(jù)庫),Airflow 對于大多數(shù) ML 團隊來說可能是一種殺傷力,而其他(非 Netflix)Python 包要么需要更多樣板文件(Luigi),要么需要額外的權(quán)限和執(zhí)行器的自定義 docker 鏡像( Elyra),而 Ploomber 則會面臨很少維護者的風(fēng)險。


查看完整回答
反對 回復(fù) 2024-01-27
?
HUWWW

TA貢獻1874條經(jīng)驗 獲得超12個贊

正如您所建議的,可以通過 Papermill 在 Airflow 管道中使用 Jupyter Notebooks。然而,Airflow 的優(yōu)點之一是您可以將管道分成彼此獨立的離散步驟,因此如果您決定在一個 Jupyter Notebook 中編寫整個管道,那么這就違背了使用 Airflow 的目的。

因此,假設(shè)每個獨立的ETL 步驟都位于單獨的 Jupyter Notebook 中,您可以嘗試以下操作:

  1. 為每個步驟創(chuàng)建一個 Jupyter Notebook。例如,,,copy_data_from_s3cleanup_data3load_into_database個步驟,每個步驟一個筆記本)。

  2. 確保每個筆記本均按照 Papermill說明進行參數(shù)化。這意味著,向每個單元添加一個標(biāo)簽來聲明可以從外部參數(shù)化的變量。

  3. 確保 Airflow 可以找到這些筆記本(例如,與 DAG 所在的文件夾位于同一文件夾中)

  4. 編寫將使用 Papermill 參數(shù)化和運行筆記本的函數(shù),每個步驟一個。例如:

import papermill as pm

# ...

# define DAG, etc.

# ...


def copy_data_from_s3(**context):

? ? pm.execute_notebook(

? ? ? ? ? ?"copy_data_from_s3_step.ipynb",

? ? ? ? ? ?"copy_data_from_s3_step.ipynb"

? ? ? ? ? ? parameters=dict(date=context['execution_date'])) # pass some context parameter if you need to

? ? ? ? )

最后,設(shè)置該步驟,也許作為 a (盡管如果您想從命令行運行 PapermillPythonOperator也可以使用 a )。要匹配上面的函數(shù):BashOperator

copy_data = PythonOperator(dag=dag,

? ? ? ? ? ? ? ? ? ? ? ? ? ?task_id='copy_data_task',

? ? ? ? ? ? ? ? ? ? ? ? ? ?provide_context=True,

? ? ? ? ? ? ? ? ? ? ? ? ? ?python_callable=copy_data_from_s3)


查看完整回答
反對 回復(fù) 2024-01-27
?
ibeautiful

TA貢獻1993條經(jīng)驗 獲得超6個贊

Airflow 有一個造紙廠操作員,但開發(fā)經(jīng)驗不是很好。Airflow 中基于 Python 的 DAG 的主要問題之一是它們在同一 Python 環(huán)境中執(zhí)行,一旦擁有多個 DAG,就會導(dǎo)致依賴問題。

如果您愿意嘗試新工具,它可以編排基于筆記本的管道(它在幕后使用 papermill)。您可以在本地開發(fā)并導(dǎo)出到 Kubernetes 或 Airflow。



查看完整回答
反對 回復(fù) 2024-01-27
?
慕的地6264312

TA貢獻1817條經(jīng)驗 獲得超6個贊

為什么你想要 ETL 作業(yè)作為 jupyter 筆記本。您看到什么優(yōu)勢?筆記本通常用于使用實時數(shù)據(jù)構(gòu)建漂亮的文檔。ETL 作業(yè)應(yīng)該是在后臺運行且自動化的腳本。

為什么這些工作不能是普通的 python 代碼而不是筆記本?

此外,當(dāng)您使用 PapermillOperator 運行筆記本時,運行的輸出將是保存在某處的另一個筆記本。不斷檢查這些輸出文件并不是那么友好。

我建議用純 Python 編寫 ETL 作業(yè)并使用 PythonOperator 運行它。這更加簡單并且更容易維護。

如果您想使用筆記本電腦的精美功能,那就是另一回事了。


查看完整回答
反對 回復(fù) 2024-01-27
  • 4 回答
  • 0 關(guān)注
  • 305 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號