那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個開源的ETL工具Airflow

lviY_AI_shequ ? 來源:未知 ? 作者:李倩 ? 2018-09-14 16:37 ? 次閱讀

最近在弄畫像標簽每天ETL的調度事情,這篇文章分享一下一個開源的ETL工具Airflow。

一、基礎概念

Airflow是Airbnb內部發起并開源的一個ETL管理平臺,使用Python編寫實現的任務管理、調度、監控工作流平臺。這是其官方文檔地址:Apache Airflow (incubating) Documentation,關于airflow產品的使用,里面有詳細的介紹。

Airflow的調度依賴于crontab命令,與crontab相比airflow可以直觀的看到任務執行情況、任務之間的邏輯依賴關系、可以設定任務出錯時郵件提醒、可以查看任務執行日志。

而crontab命令管理的方式存在以下幾方面的弊端:

1、在多任務調度執行的情況下,難以理清任務之間的依賴關系;

2、不便于查看當前執行到哪一個任務;

3、任務執行失敗時不便于查看執行日志,也即不方便定位報錯的任務和錯誤原因;

4、不便于查看調度流下每個任務執行的起止消耗時間,這對于優化task作業是非常重要的;

5、不便于記錄歷史調度任務的執行情況,而這對于優化作業和錯誤排查是很重要的;

Airflow中有兩個最基本的概念:DAG和task,下面主要介紹一下。

DAG是什么:

DAG是Directed Acyclic Graph的縮寫,即有向無環圖。是所有要執行任務腳本(即task)的集合,在這個DAG中定義了各個task的依賴關系、調度時間、失敗重啟機制等。通過DAGid來標識每個DAG任務

每個DAG是由1到多個task組成

task是什么:

task是具體執行的任務腳本,可以是一個命令行(BashOperator),也可以是python腳本等。

二、主要功能鍵介紹

1、DAG管理

在airflow的主頁,可以看到當前所有的DAG列表(通俗點說就是所有的調度任務列表),中間“Task by State”那一列顯示任務的執行狀態。深綠色的表示已執行成功的task,淺綠色的表示當前正在執行的task。

右側“Links”那一列可以鏈接查看當前DAG任務的依賴關系、執行時間、執行腳本等情況。

當點擊具體某一個DAG任務時,就可以進去查看該DAG的調度依賴、執行時長、調度腳本等具體執行情況

2、調度依賴查看

通過“Graph View”選項可以查看當前調度任務的依賴關系,當調度作業較為復雜時,這種圖形化方式展示的依賴關系可以幫助用戶迅速理清。

在用戶畫像的調度管理中,每天需要執行cookieid和userid兩個維度的畫像腳本,因此可以設定并行執行任務,讓cookieid和userid的腳本同時執行調度作業

3、執行狀態

通過“Tree View”選項可以查看當前任務的執行狀態,包括當前執行到哪一個task,還有哪些task未執行。哪些task執行成功,哪些task執行失敗。

也可以查看歷史上該DAG下面各task的執行情況。

4、各task執行時間

通過“Gantt”選項可以查看各task任務的執行起止時間的甘特圖。

了解各task執行的時間可以有針對性地優化執行時間長的task對應腳本。

5、DAG調度腳本

通過“Code”選項,可以查看當前DAG調度的腳本。腳本里面定義了需要執行的task、執行順序及依賴、調度時間、失敗發送郵件或重調機制等方法

三、腳本實例

在開發過程中,task腳本是需要被調度的腳本,在Airflow中主要需要開發的是DAG腳本,即管理task任務的腳本。通過一個DAG腳本,將各個調度作業腳本串起來,按照業務邏輯去執行。

1、DAG腳本

下面通過一個具體DAG腳本實例來了解一下:

from airflow.operators.bash_operator import BashOperator import airflow from airflow.models import DAG from airflow import operators from airflow.contrib.hooks import SSHHook from airflow.models import BaseOperator from airflow.contrib.operators import SSHExecuteOperator from airflow.operators.latest_only_operator import LatestOnlyOperator import os import sys from datetime import timedelta,date,datetime import pendulum from airflow.utils.trigger_rule import TriggerRule default_args = { 'owner': 'superuserprofile', 'depends_on_past': False, 'start_date': datetime(2018, 06, 01), 'email': ['administer@testemail.com'], 'email_on_failure': True , 'email_on_retry': True, 'retries': 1, 'retry_delay': timedelta(minutes=1), } os.environ['SPARK_HOME'] = '/usr/local/spark-2.1.1-bin-hadoop2.6' sys.path.append(os.path.join(os.environ['SPARK_HOME'], 'bin'))

該段腳本定義了需要引入的包,以及默認的DAG參數配置,包括task是否依賴上游任務,首次調度時間、任務失敗接收郵箱、任務失敗是否重新調起等

dag = DAG( 'superuserprofile', default_args=default_args, description='A userprofile test', schedule_interval='00 08 * * *' )

該段腳本實例化了DAG,設置了DAGid,調度執行時間

gender_task = BashOperator( task_id='gender', bash_command=' sudo -E -H -u userprofile spark-submit --master yarn --deploy-mode client --driver-memory 1g --executor-memory 8g --executor-cores 2 --num-executors 200 /airflow/userprofile_gender.py {{ ds_nodash }} ', dag=dag, trigger_rule=TriggerRule.ALL_DONE ) country_task = BashOperator( task_id='country', bash_command=' sudo -E -H -u userprofile spark-submit --master yarn --deploy-mode client --driver-memory 1g --executor-memory 4g --executor-cores 2 --num-executors 200 /airflow/userprofile_country.py {{ ds_nodash }} ', dag=dag, trigger_rule=TriggerRule.ALL_DONE )

該段腳本設置了兩個需要執行的task任務(userprofile_gender.py和userprofile_country.py)的實例化。

task直接的調度依賴關系可以通過set_upstream、set_downstream命令或符號>> 、<<來建立。

gender_task .set_upstream(country_task) 命令指gender_task 任務將依賴country_task任務;反之同理

gender_task >> country_task 命令指country_task 任務將依賴gender_task 任務先執行完,反之同理

2、命令行執行

Airflow通過可視化界面的方式實現了調度管理的界面操作,但在測試腳本或界面操作失敗的時候,可通過命令行的方式調起任務。下面介紹幾個常用命令

命令1:airflow list_tasksuserprofile

該命令用于查看當前DAG任務下的所有task的列表

其中userprofile是DAGid,加粗的airflow list_tasks是關鍵字命令

-----------------------------------------------------------------------

命令2:airflow testuserprofile gender_task 20180601

該命令用于單獨執行DAG下面的某個task

其中userprofile是DAGid,gender_task是要具體某個taskid,20180601是執行日期。加粗部分是關鍵字命令

-----------------------------------------------------------------------

命令3:airflow backfill -s2018-06-01-e2018-06-02 userprofile

該命令用于調起整個DAG腳本執行

其中2018-06-01是執行腳本的開始日期, 2018-06-02是結束日期,userprofile是DAGid,加粗部分是關鍵字命令。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開源
    +關注

    關注

    3

    文章

    3408

    瀏覽量

    42714
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85040

原文標題:用戶畫像—Airflow作業調度(ETL)

文章出處:【微信號:AI_shequ,微信公眾號:人工智能愛好者社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    QT編寫JLINK燒錄工具

    概述 作者直有想法,就是寫功能強大的桌面小工具,里面集成各種平時開發要用的
    的頭像 發表于 01-09 11:53 ?3648次閱讀

    【美洲認證系列】美國ETL認證介紹

    美國發明家愛迪生在1896年手創立的,在美國及世界范圍內享有極高的聲譽。同UL、CSA樣,ETL可根據UL標準或美國國家標準測試核發ETL認證標志,也可同時按照UL標準或美國國家標
    發表于 08-07 15:40

    美國ETL認證簡介

    美國ETL認證簡介  ETL是美國電子測試實驗室(ElectricalTestingLaboratories)的簡稱。ETL試驗室是由美國發明家愛迪生在1896年手創立的,在美國及世
    發表于 04-25 18:33

    UL和ETL的區別是什么?

    ETL認證和UL認證具有同樣的北美市場準入效力,但ETL認證的費用比UL認證低的多,般只有UL認證的半,而且,ETL認證的產品檢測可以通
    發表于 08-10 21:41

    BI軟件的ETL開源的好,還是自研的好?

    時,需要將問題反饋到社區。由于開源社區無人負責,需要被動等待對方響應并解決問題,這就又有不可預估的時間成本。自研ETL:BI軟件里的自研ETL
    發表于 08-27 09:44

    路燈ETL認證

    目前取得ETL證書有兩種方式,種通過CB測試報告轉,種是直接申請,所需提交資料如下:1、申請表;2、CB測試證書復印件(直接申請不需要);3、CB測試報告復印件(直接申請不需要);4、樣品(4-8
    發表于 06-10 22:02

    如何使用openssl制作開源C簽名工具

    為了將簽名與多維數據集程序員分離,我使用 openssl 制作了開源 C 簽名工具。在各種構建環境中應該相當容易使用。
    發表于 12-06 07:52

    種金融系統專用ETL工具的研究與實現

    實現了種基于Spring框架的商業銀行專用ETL程序。該程序利用Spring框架的控制反轉技術,基于Ibatis的數據訪問對象技術和Spring JDBC,以及Spring對Timer的支持,解決了ETL過程中的數據轉
    發表于 04-13 09:04 ?24次下載

    基于元數據的ETL工具集成研究

    針對現有的ETL工具在大型信息集成系統中的應用缺陷,結合元數據技術,通過對ETL工具的集成,設計實現了基于元數據的ETL
    發表于 12-25 14:53 ?10次下載

    基于數據質量監管的ETL設計

    設計具有靈活性和可擴展性的ETL 架構,對ETL 架構進行靈活改進,把數據質量管理引入到ETL 架構中,嘗試以此提高數據倉庫的數據質量,
    發表于 01-15 16:30 ?9次下載

    ETL工具Kettle用戶手冊

    ETL工具Kettle用戶手冊
    發表于 04-05 11:02 ?0次下載

    用于數據分析的各類主流ETL 工具比較,哪種最適合你

    數據提取、轉換與加載(ETL,Extract-Transform-Load)工具能夠使組織內的不同數據更易于訪問、更有意義、也更能被其他數據系統所使用。通常情況下,面對由此產生的自寫代碼、自建系統的相關成本和復雜性時,企業會直接去選擇購置
    的頭像 發表于 06-23 11:25 ?2.4w次閱讀

    款用于Windows的開源反rookit (ARK)工具

    OpenArk 是款用于 Windows 的開源反 rookit (ARK) 工具。Ark是Anti-Rootkit的縮寫,它是款逆向/編程幫手,也是用戶發現操作系統中隱藏惡意軟件
    的頭像 發表于 07-19 15:08 ?3752次閱讀
    <b class='flag-5'>一</b>款用于Windows的<b class='flag-5'>開源</b>反rookit (ARK)<b class='flag-5'>工具</b>

    多數據源數據轉換和同步的ETL工具推薦

    有許多支持多數據源數據轉換和同步的ETL工具可供選擇。以下是些常見的ETL工具和它們支持多數據源數據轉換和同步的特點: Apache Ni
    的頭像 發表于 07-28 16:32 ?1159次閱讀

    上線 Airflow 官方!DolphinDB 帶來數據管理新體驗

    DolphinDB 正式登陸 Apache Airflow 官方,成為 Airflow 官方認可的第三方插件及工具供應商。Apache Airflow
    的頭像 發表于 08-23 17:00 ?339次閱讀
    上線 <b class='flag-5'>Airflow</b> 官方!DolphinDB 帶來數據管理新體驗
    CEO百家乐现金网| 德州扑克顺子| 澳门百家乐玩法与游戏规则| 百家乐官网高手论| 百家乐官网换人| 洛阳市| 南通棋牌游戏中心| 威尼斯人娱乐备用6222| 百家乐怎么骗人| 百家乐网址皇冠现金网| e世博百家乐技巧| 百家乐网真人真钱群| 百家乐小77论坛| TT百家乐现金网| 百家乐h游戏怎么玩| 百家乐娱乐城有几家| 赌博百家乐规则| 百家乐国际娱乐平台| 网上百家乐赌城| 免费百家乐追号软件| 大发888 迅雷快传| 德州扑克专业版| 蓝盾国际娱乐| 百家乐官网打法分析| 文成县| 澳门百家乐官网打法百家乐官网破解方法 | 赌场风云2| 百家乐官网现金网排名| 玩百家乐官网优博娱乐城| 百家乐官网视频造假| 休闲百家乐官网的玩法技巧和规则 | 德州扑克排名| 滨州市| 百家乐官网模拟游戏下载| 神人百家乐官网赌场| 成都百家乐官网牌具| 网站百家乐假| 幸运水果机游戏| 棋牌游戏开发商| 金百家乐官网博彩公司| 百家乐官网可以破解吗|