0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于非常簡單的Python代碼就能完成流水線開發(fā)

Linux愛好者 ? 來源:Python實(shí)用寶典 ? 作者:Ckend ? 2021-11-16 18:20 ? 次閱讀

Mara-pipelines 是一個(gè)輕量級的數(shù)據(jù)轉(zhuǎn)換框架,具有透明和低復(fù)雜性的特點(diǎn)。其他特點(diǎn)如下:

基于非常簡單的Python代碼就能完成流水線開發(fā)。

使用 PostgreSQL 作為數(shù)據(jù)處理引擎。

有Web界面可視化分析流水線執(zhí)行過程。

基于 Python 的 multiprocessing 單機(jī)流水線執(zhí)行。不需要分布式任務(wù)隊(duì)列。輕松調(diào)試和輸出日志。

基于成本的優(yōu)先隊(duì)列:首先運(yùn)行具有較高成本(基于記錄的運(yùn)行時(shí)間)的節(jié)點(diǎn)。

此外,在Mara-pipelines的Web界面中,你不僅可以查看和管理流水線及其任務(wù)節(jié)點(diǎn),你還可以直接觸發(fā)這些流水線和節(jié)點(diǎn),非常好用:

1.安裝

由于使用了大量的依賴,Mara-pipelines 并不適用于 Windows,如果你需要在 Windows 上使用 Mara-pipelines,請使用 Docker 或者 Windows 下的 linux 子系統(tǒng)。

使用pip安裝Mara-pipelines:

pip install mara-pipelines

或者:

pip install git+https://github.com/mara/mara-pipelines.git

2.使用示例

這是一個(gè)基礎(chǔ)的流水線演示,由三個(gè)相互依賴的節(jié)點(diǎn)組成,包括 任務(wù)1(ping_localhost), 子流水線(sub_pipeline), 任務(wù)2(sleep):

# 注意,這個(gè)示例中使用了部分國外的網(wǎng)站,如果無法訪問,請變更為國內(nèi)網(wǎng)站。
frommara_pipelines.commands.bash importRunBash
frommara_pipelines.pipelines importPipeline, Task
frommara_pipelines.ui.cli importrun_pipeline, run_interactively

pipeline = Pipeline(
id='demo',
description='A small pipeline that demonstrates the interplay between pipelines, tasks and commands')

pipeline.add(Task(id='ping_localhost', description='Pings localhost',
commands=[RunBash('ping -c 3 localhost')]))

sub_pipeline = Pipeline(id='sub_pipeline', description='Pings a number of hosts')

forhost in['google', 'amazon', 'facebook']:
sub_pipeline.add(Task(id=f'ping_{host}', description=f'Pings {host}',
commands=[RunBash(f'ping -c 3 {host}.com')]))

sub_pipeline.add_dependency('ping_amazon', 'ping_facebook')
sub_pipeline.add(Task(id='ping_foo', description='Pings foo',
commands=[RunBash('ping foo')]), ['ping_amazon'])

pipeline.add(sub_pipeline, ['ping_localhost'])

pipeline.add(Task(id='sleep', description='Sleeps for 2 seconds',
commands=[RunBash('sleep 2')]), ['sub_pipeline'])

可以看到,Task包含了多個(gè)commands,這些 command s會用于真正地執(zhí)行動(dòng)作。

而 pipeline.add 的參數(shù)中,第一個(gè)參數(shù)是其節(jié)點(diǎn),第二個(gè)參數(shù)是此節(jié)點(diǎn)的上游。如:

pipeline.add(sub_pipeline, ['ping_localhost'])

則表明必須執(zhí)行完 ping_localhost 才會執(zhí)行 sub_pipeline.

為了運(yùn)行這個(gè)流水線,需要配置一個(gè) PostgreSQL 數(shù)據(jù)庫來存儲運(yùn)行時(shí)信息、運(yùn)行輸出和增量處理狀態(tài):

importmara_db.auto_migration
importmara_db.config
importmara_db.dbs

mara_db.config.databases 
= lambda: {'mara': mara_db.dbs.PostgreSQLDB(host='localhost', user='root', database='example_etl_mara')}

mara_db.auto_migration.auto_discover_models_and_migrate()

如果 PostgresSQL 正在運(yùn)行并且賬號密碼正確,輸出如下所示(創(chuàng)建了一個(gè)包含多個(gè)表的數(shù)據(jù)庫):

Created database "postgresql+psycopg2://root@localhost/example_etl_mara"

CREATETABLEdata_integration_file_dependency (
node_path TEXT[] NOTNULL, 
dependency_type VARCHARNOTNULL, 
hashVARCHAR, 
timestampTIMESTAMPWITHOUTTIMEZONE, 
PRIMARY KEY(node_path, dependency_type)
);

.. more tables

為了運(yùn)行這個(gè)流水線,你需要:

frommara_pipelines.ui.cli importrun_pipeline

run_pipeline(pipeline)

這將運(yùn)行單個(gè)流水線節(jié)點(diǎn)及其 (sub_pipeline) 所依賴的所有節(jié)點(diǎn):

run_pipeline(sub_pipeline, nodes=[sub_pipeline.nodes['ping_amazon']], with_upstreams=True)

3.Web 界面

我認(rèn)為 mara-pipelines 最有用的是他們提供了基于Flask管控流水線的Web界面。

對于每條流水線,他們都有一個(gè)頁面顯示:

所有子節(jié)點(diǎn)的圖以及它們之間的依賴關(guān)系

流水線的總體運(yùn)行時(shí)間圖表以及過去 30 天內(nèi)最昂貴的節(jié)點(diǎn)(可配置)

所有流水線節(jié)點(diǎn)及其平均運(yùn)行時(shí)間和由此產(chǎn)生的排隊(duì)優(yōu)先級的表

流水線最后一次運(yùn)行的輸出和時(shí)間線

對于每個(gè)任務(wù),都有一個(gè)頁面顯示

流水線中任務(wù)的上游和下游

最近 30 天內(nèi)任務(wù)的運(yùn)行時(shí)間

任務(wù)的所有命令

任務(wù)最后運(yùn)行的輸出

此外,流水線和任務(wù)可以直接從網(wǎng)頁端調(diào)用運(yùn)行,這是非常棒的特點(diǎn)。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6713

    瀏覽量

    88301
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84069

原文標(biāo)題:超級方便的輕量級 Python 流水線工具,還有漂亮的可視化界面!

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    行云流水線 滿足你對工作流編排的一切幻想~skr

    流水線模型 眾所周知,DevOps流水線(DevOps pipeline)的本質(zhì)是實(shí)現(xiàn)自動(dòng)化工作流程,用于支持軟件開發(fā)、測試和部署的連續(xù)集成、交付和部署(CI/CD)實(shí)踐。它是DevOps方法論
    的頭像 發(fā)表于 08-05 13:42 ?147次閱讀

    ADS900高速流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADS900高速流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-30 14:11 ?0次下載
    ADS900高速<b class='flag-5'>流水線</b>模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    ADS930高速流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADS930高速流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-30 14:10 ?0次下載
    ADS930高速<b class='flag-5'>流水線</b>模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    ADS5421流水線式模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADS5421流水線式模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-30 11:16 ?0次下載
    ADS5421<b class='flag-5'>流水線</b>式模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    ADS5413 CMOS流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADS5413 CMOS流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-29 13:21 ?0次下載
    ADS5413 CMOS<b class='flag-5'>流水線</b>模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    ADS828流水線式CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADS828流水線式CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-23 09:17 ?0次下載
    ADS828<b class='flag-5'>流水線</b>式CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    固定式的掃碼器在SMT流水線中的使用

    新大陸固定式掃碼器作為一種高效的條碼掃描設(shè)備,廣泛應(yīng)用于各個(gè)行業(yè)中,尤其是在SMT(表面貼裝技術(shù))流水線中有重要的作用。以下是新大陸固定式掃碼器在SMT流水線中的具體使用情況。提高生產(chǎn)效率和質(zhì)量
    的頭像 發(fā)表于 07-03 10:18 ?330次閱讀
    固定式的掃碼器在SMT<b class='flag-5'>流水線</b>中的使用

    新大陸工業(yè)讀碼器Soldier100,用于流水線上數(shù)據(jù)碼采集

    ,非常適合在制造業(yè)中進(jìn)行數(shù)據(jù)碼的采集。高速流動(dòng)條碼的識別能力:在制造業(yè)的流水線上,尤其是在大企業(yè)和大產(chǎn)品生產(chǎn)的過程中,數(shù)據(jù)收集非常重要。傳統(tǒng)的手工收集方法不僅效率低下
    的頭像 發(fā)表于 06-26 14:12 ?184次閱讀
    新大陸工業(yè)讀碼器Soldier100,用于<b class='flag-5'>流水線</b>上數(shù)據(jù)碼采集

    RISC-V架構(gòu)的多級流水線處理

    有的單核RISC-V MCU支持四級流水線,有的只支持三級流水線,是不是級數(shù)越多,帶來的開銷越大,功耗也越高呢?
    發(fā)表于 05-20 16:01

    具有3態(tài)輸出的多級流水線寄存器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有3態(tài)輸出的多級流水線寄存器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-16 09:39 ?0次下載
    具有3態(tài)輸出的多級<b class='flag-5'>流水線</b>寄存器數(shù)據(jù)表

    固定式安裝工業(yè)讀碼器,助力提高流水線人工上料效率

    上的條碼信息,無需手動(dòng)操作即可完成數(shù)據(jù)采集。這種自動(dòng)化的條碼掃描技術(shù)大大縮短了人工上料的時(shí)間,提高了生產(chǎn)效率。而工業(yè)讀碼器的穩(wěn)定性和準(zhǔn)確度保證了流水線上料過程中的順暢
    的頭像 發(fā)表于 02-27 14:43 ?217次閱讀
    固定式安裝工業(yè)讀碼器,助力提高<b class='flag-5'>流水線</b>人工上料效率

    牽引機(jī)和挖掘機(jī)裝配流水線自動(dòng)互鎖防呆系統(tǒng)無線通訊應(yīng)用

    在挖掘機(jī)裝配工序中,液壓系統(tǒng)檢測、調(diào)試是其生產(chǎn)工藝中的重要環(huán)節(jié)。液壓檢測過程中需要操作鏟斗、斗桿、動(dòng)臂動(dòng)作,這一過程中流水線挖掘機(jī)因帶動(dòng)偏移易發(fā)生安全事故及機(jī)械損傷故障等情況,需要采用牽引機(jī)鏈條牽引
    的頭像 發(fā)表于 02-26 08:52 ?261次閱讀
    牽引機(jī)和挖掘機(jī)裝配<b class='flag-5'>流水線</b>自動(dòng)互鎖防呆系統(tǒng)無線通訊應(yīng)用

    超級方便的輕量級Python流水線工具

    Mara-pipelines 是一個(gè)輕量級的數(shù)據(jù)轉(zhuǎn)換框架,具有透明和低復(fù)雜性的特點(diǎn)。其他特點(diǎn)如下: 基于非常簡單Python代碼就能
    的頭像 發(fā)表于 10-31 11:26 ?543次閱讀
    超級方便的輕量級<b class='flag-5'>Python</b><b class='flag-5'>流水線</b>工具

    Mara-pipelines:輕量級的數(shù)據(jù)轉(zhuǎn)換框架

    Mara-pipelines 是一個(gè)輕量級的數(shù)據(jù)轉(zhuǎn)換框架,具有透明和低復(fù)雜性的特點(diǎn)。其他特點(diǎn)如下: 基于非常簡單Python代碼就能
    的頭像 發(fā)表于 10-30 10:47 ?465次閱讀
    Mara-pipelines:輕量級的數(shù)據(jù)轉(zhuǎn)換框架

    流水線ADC結(jié)構(gòu)解析 流水線ADC和其它ADC的比較

    低采樣速率ADC仍然采用逐次逼近(SAR)、積分型結(jié)構(gòu)以及最近推出的過采樣ΣΔADC,而高采樣速率(幾百M(fèi)SPS以上)大多用閃速ADC及其各種變型電路。然而,最近幾年各種各樣的流水線ADC已經(jīng)在速度
    發(fā)表于 09-26 10:24 ?1045次閱讀
    <b class='flag-5'>流水線</b>ADC結(jié)構(gòu)解析 <b class='flag-5'>流水線</b>ADC和其它ADC的比較