面向大数据处理的数据流编程模型和工具综述
點擊上方藍字關注我們
面向大數據處理的數據流編程模型和工具綜述
鄒驍鋒,?陽王東,?容學成,?李肯立,?李克勤
湖南大學信息科學與工程學院,湖南 長沙 410008
論文引用格式:
鄒驍鋒,?陽王東,?容學成,?李肯立,?李克勤.面向大數據處理的數據流編程模型和工具綜述.?大數據[J], 2020, 6(3):59-72
ZOU X F, YANG W D, RONG X C, LI K L, LI K Q.A survey of dataflow programming models and tools for big data processing.?Big Data Research[J], 2020, 6(3): 59-72
1 引言
自21世紀以來,移動互聯網、物聯網和云計算等新的信息化技術被廣泛應用,這些新興的技術在應用過程中產生了海量的數據。隨著海量數據的產生,處理海量數據的新的大數據處理技術被廣泛研究,在大型計算機集群上使用分布式并行計算技術構建的分布式大數據處理平臺也得到快速發展,從最初的Hadoop及其生態系統發展到基于內存計算的Flink、Storm、Spark等。基于傳統的數據庫技術,對大數據離線批處理分析的研究較多,相關應用也較為成熟。但是隨著實時產生的數據增多,對流式數據(如視頻)進行實時性分析的需求也越來越普遍,這些實時性強的應用領域的海量數據規模對目前的大數據處理平臺提出了極大的挑戰。經典的應用場景包括網站日志查詢、城市實時監控、物聯網傳感器網絡、自動化運維系統的異常檢測等。在這些場景下,數據流持續不斷地產生,并以大量、快速、時變的方式到達系統,需要系統快速可靠地進行處理。例如,一個城市交通檢測系統中包含大量的攝像頭,它們分布在不同的路口,每個攝像頭收集當前路口的交通信息,持續地產生數據流,并將數據流發送到計算機系統進行處理。接收到數據流的計算機系統對數據流進行分析,進而監控城市道路的實時交通狀態,以便最快地基于狀態采取相應行動。因此,高通量、低時延是實時數據流計算系統的核心指標。
目前數據流計算采用的是數據流模型(dataflow model)。數據流模型將整個計算任務抽象為數據流圖,以數據驅動的方式處理計算,以數據流為中心實現業務的處理過程。數據流計算模式將需要處理的數據分配到計算資源上,實現數據的計算與通信分離,并通過數據的到達來激發計算任務的調度和資源的分配,利用流水線的并行特性充分地挖掘數據流處理中潛在的并行性,進而充分發揮計算資源的性能,并提高資源間負載的均衡性。用戶面向數據流描述數據計算的處理邏輯,在程序執行過程中,系統會通過數據觸發機制,自發地處理在計算過程中由數據依賴引發的計算順序問題,在編程過程中減少了因為數據依賴問題而產生的同步和阻塞操作,降低了并行編程的難度。在分布式并行編程領域,程序員使用數據流編程模型,不需要對底層的分布式系統有深入的了解和控制,只需把重點放在領域應用業務流程描述上,關注數據流程的處理過程即可,真正做到了面向領域編程。
本文首先比較了傳統軟件工程中面向數據流的分析和設計方法;隨后詳細地描述了幾種目前大數據處理平臺提供的數據流編程模型的結構定義和模型參考,并分析了兩者的差異和不足,總結了數據流編程模型的主要特征和關鍵要素;最后分析了目前數據流編程的主要方式以及與主流編程工具的結合,針對大數據處理的數據流計算業務需求,給出了可視化數據流編程工具的基本框架和編程模式。
2 傳統軟件工程中面向數據流的分析和設計方法
軟件工程中傳 統的結 構化設 計(structured design,SD)提供了一種面向數據流的設計方法,該方法提供了針對業務需求的邏輯模型處理數據流的描述方式,并能夠根據數據流處理的邏輯模型導出系統的軟件模塊結構。在軟件開發過程中,面向數據流方法將需求分析階段生成的數據流圖(data flow diagram,DFD)映射成表達軟件系統結構的軟件模塊結構圖。在面向數據流的分析方法中,數據流圖用于描述系統中信息的處理加工和流動情況。在DFD中,系統的輸入數據流經過一系列的變換最終成為系統的輸出數據流,在這個過程中流動的就是信息流。DFD能夠從業務的需求層面描述信息處理的邏輯模型,但是不能描述系統的執行模式。
2.1 傳統軟件工程中面向數據流的概念
面向數據流的分析和設計方法,數據流可劃分為以下2種類型。
(1)變換流
數據通過輸入通路進入系統,進入系統的數據流在變換中心加工處理后變換成另一種數據流,再通過輸出通路輸出。具有這些特征的數據流被稱為變換流。針對變換流的DFD通常由3個部分組成:輸入、變換(加工處理)、輸出。
(2)事務流
數據通過輸入通路到達某一個處理步驟,在處理期間,系統會判定輸入數據的類型,選擇某個動作序列執行。這種類型的數據流被稱為事務流,對事務流的處理單元叫作事務中心,事務流的處理路徑從事務中心呈輻射狀流出。事務流的DFD主要由以下3個部分組成:輸入通路(輸入的數據稱為事務)、事務判定、根據事務類型選取一條執行路徑。
2.2 數據流圖
面向數據流的分析和設計方法中的DFD是描述系統中數據流的處理過程的一種圖形化工具,它體現了一個系統把業務輸入轉換為業務輸出所需的數據流加工處理過程,DFD的組成要素如圖1所示,包括數據源點和數據匯點、數據流、數據加工或處理、數據存儲。利用DFD描述基于公式的即時家教系統的數據流處理過程如圖2所示。
圖1???DFD的組成要素
圖2???基于公式的即時家教系統的數據流處理過程
3 數據流模型
數據流模型(與馮·諾依曼模型的結構不同)于20世紀60年代末由麻省理工學院的Dennis團隊提出。
根據對數據的處理方式,數據流模型可以分為2種:靜態數據流模型和動態數據流模型。靜態數據流模型的計算單元處理的數據集合是受到限制的,因此可以在編譯期間對數據的處理進行優化;動態數據流模型的計算單元處理的數據集合是沒有限制的。
數據流模型可以分為2個層面:一個層面是數據流的編程模型,其面向應用需求描述數據流的處理邏輯;另一個層面是數據流的執行模型,其面向執行環境描述數據流的計算過程。數據流編程模型能夠利用數據流處理的并行性以及數據流流向的單一性,大大簡化編程人員的編程任務。
圖3???數據流圖
近幾年,國內外研究人員對數據流編程模型、語言及工具進行了一系列研究。Li A等人提出了一種在GPU上細粒度并行的數據流編程模型。Halbwachs N等人提出了一種同步數據流編程語言LUSTER。蘇志超等人在神威?太湖之光超級計算機上設計了一種能高效地利用GPU片上計算資源的方法,有效地解決了數據流執行的并行計算問題,這種基于數據流的編程模型被稱為SunwayFlow。針對異構并行計算機集群硬件平臺存在多級并行結構的問題,楊瑞瑞等人基于數據流應用程序和CPU/GPU異構計算特性,設計并實現了一個面向CPU-GPU異構協同的數據流編程模型。為了提高面向數據流的應用程序開發的可編程性,張維維等人進一步提出了一種新的數據流編程模型——COStream,它提供了數據流編程語言和編譯工具,大大降低了并行編程的難度。
4 基于數據流的編程模型
數據流編程語言以數據為核心,對施加在數據流上的面向業務領域的數據處理功能模塊進行定義,把數據流的傳遞流動與數據流的處理進行分離,充分利用數據流的天然并行性,發揮數據流模型的并行性。數據流編程模型是專門針對流處理器設計的編程模型,它以數據流程序語言為基礎,能清晰地描述數據流程序的業務邏輯,并針對分布式并行環境描述其業務程序的執行模式。目前主要有Apache Beam、SWARM、St reamIt、COStream、TensorFlow等數據流編程模型。
4.1 Apache Beam
Beam是 Apache軟件基金會(Apache Software Foundation,ASF)的項目。2017年5月17日ASF發布了其第一個穩定版2.0.0。目前的最新版本為2.16.0。Beam項目主要對數據流處理(包含有界數據集和無界數據集)的編程范式和接口進行了統一定義。基于Beam開發的數據流處理程序可以在多種分布式計算引擎上執行。Beam的架構如圖4所示。
圖4???Beam的架構
Be am編程模型主要由以下3個部分構成。
(1)Modes
Modes是Beam的模型,也是數據來源的I/O,由多種數據源或倉庫的I/O組成,數據源支持批處理和流處理。
(2)Pipeline
Pipeline是Beam的管道,這個管道現在是唯一的。管道可以看成數據流的傳遞和存儲通道,它的作用是連接數據和Runtimes平臺。所有的批處理或流處理都要通過這個管道把數據傳輸到后端的計算平臺。管道可以連接多種數據源,也可以把數據流傳遞給不同的計算平臺。
(3)Runtimes
Runtimes是大數據計算或處理平臺,目前支持Direct Pipeline、Apache Spark、Apache Flink和Google Cloud Dataflow 4種大數據框架。其中Direct Pipeline僅支持本地,Apache Spark和Apache Flink同時支持本地和云端。Google Cloud Dataflow僅支持云端。
Beam提供了以下2個數據流編程的組件。
(1)Beam SDK
Beam SDK定義了提供一個統一的編程接口給上層應用的開發者,開發者可以利用提供的API開發分布式數據流處理的業務邏輯。開發者可以直接通過Beam SDK的接口開發數據流加工處理程序,不需要了解底層具體的大數據平臺開發接口。Beam SDK對批處理的有界數據集和流處理的無界數據集都使用相同的類,并且使用相同的轉換操作進行處理。
(2)Beam Pipeline Runner
Beam Pipeline Runner對用Beam SDK編寫的數據流處理程序進行編譯,并將其轉換為具體大數據計算平臺上的可執行的代碼。從編程模式上來說,Beam分為3個部分:第一部分是利用Beam模型構建數據處理管道;第二部分是利用Beam SDK實現管道中數據處理的邏輯;第三部分是把包含數據處理邏輯的數據管道通過Beam Pipeline Runner編譯成可在具體計算平臺上執行的程序,在編譯時,需要制定可執行的計算平臺。最后把編譯好的程序部署到分布式計算引擎上運行。
利用Apache Beam實現對輸入的字符串數據流的單詞計數,如圖5所示。數據流計算流程如下。
● 格式化輸入的文本數據。
● 將文本行轉換成單個單詞。
● 統計每個單詞出現的次數。
● 格式化輸出單詞計數的結果。
圖5???基于Apache Beam 的單詞計數數據流圖
4.2 SWARM
SWARM是一個運行時系統,其核心的執行模型是基于Codelet的動態數據流模型。它的目的是允許應用程序在單核、多核或眾核計算機上良好運行,并且允許應用程序在計算集群或廣域網之間以及不同類型的計算硬件之間透明地遷移。這將允許應用程序更輕松、更廣泛地擴展,并使直接擴展軟件路徑成為可能。SWARM的模型適用于共享存儲和分布式存儲的并行計算機系統。
SWARM運行時系統采用數據流模型Codelet作為最基本的執行和調度單元。一個Codelet由以下4個部分組成。
● run fork,描述將被執行的任務,并推進程序執行的狀態。
● cancelfork,描述錯誤發生時,回退程序的狀態的方式。
● 描述上下文環境的類型,存儲codelet的狀態等信息。
● 輸入數據的類型描述。
當創建一個Codelet實例時,會將該Codelet與上下文(context)框架關聯。在給runfork提供輸入數據或者在給cancalfork提供錯誤數據時,Codelet實例會進入就緒(enabeld)狀態,能夠被調度器調度。調度器選中準備就緒的Codelet,并分發給計算單元執行,此時Codelet的狀態轉換為 激活(active)狀態。Codelet在執行期間處于激活狀態時,該執行進程不會被阻塞,直至執行結束,結束后Codelet就進入完成(completed)狀態。
Codelet模型的第一個官方實現的運行時系統是SWARM,它為后續關于Codelet模型的實現等研究工作提供了很好的啟示和參考意義。但SWARM還不成熟,運行時系統的適應性只是一個較為初步的、實驗性的工作,其作為支撐數據流編程模型的實現還不完善,需要進一步研究。
4.3 StreamIt
StreamIt以Java語言程序為基礎,根據同步數據流(synchronous data flow,SDF)模型進行數據流擴展,利用管道(pipeline)、拼接(splitjoin)和反饋循環(feedback loop)3種層次性的結構幫助編程人員對業務應用進行并行抽象。其最初是麻省理工學院針對RAW處理器開發的一種編程模型,后來延伸到數據流編程領域。
SDF模型由計算任務節點和邊構成,其中數據流計算任務節點的最基本單元是actor,邊表示計算任務節點之間的數據流動,在邊上設置2個權值參數表示輸入流和輸出流的速率。在SDF模型中,actor分為2類:有狀態和無狀態。有狀態的actor需要保存執行狀態參數,以便為下次執行提供參數;無狀態的actor則不需要保存執行狀態參數。計算任務節點actor采用數據驅動的方式執行,當足夠的數據到達輸入邊時,actor會被激活,并執行生成數據到輸出邊。StreamIt模型針對SDF模型提供了基本運算單元(filter)和核心模塊(work),其中filter與SDF中的actor對應,work函數促使filter中計算任務的實現。StreamIt模型針對特定的處理器以及SDF模型中計算和通信隔離的機制,挖掘應用程序的深度并行性,在基于數據流的處理過程中構建面向數據流的編程模型,支持高級語言Java目標代碼,并提供一定的并行化機制。
StreamIt模型是一種天然的并行編程模型,在程序設計過程中蘊含一些瓶頸問題。filter有時執行的代碼量很小,但是數據傳輸量很大,導致程序性能降低。有狀態的filter是串行執行的,即前面的filter沒有執行完成時,后面的filter無法工作;在實際程序設計中,設計人員設計加入了過多無用的filter,造成過長的串行流水線結構,影響系統的整體效率。當某個filter中的具有高度并行性的語句經過普通處理器執行后仍然得不到很高的加速,經過編譯后還存在大量的并行循環執行語句時,這些語句中通常包含大量的浮點計算指令,往往會花費大量運行時間,而它們的運行仍然是串行方式。SteamIt模型為了提高并行度,會結合處理器數目將若干并行任務劃分為相應區域,實際的問題是過多的劃分將導致額外開銷的加大,而過小的劃分則會增加執行時間。
針對這些問題,StreamIt模型的研究圍繞精簡Pipeline、局部自動并行化、串并行自動拆分、多進多出filter等技術進行開展。目前,對于filter節點輸入與輸出端口來說,可以是一對一、一對多或多對一的。不過對于不同類型的數據流程序來說,節點為多進多出更符合程序固有模式。
4.4 COStream
COStream是一種層次型數據流編程模型,將SDF模型作為執行模型,利用DAG描述應用處理過程。COStream主要由數據流(stream)、操作(operator)和組合(composite)3個語法單元組成。
連接數據流圖中的各個計算單元邊的抽象stream是由一系列token組成的數據序列,stream為SDF中的actor提供可并行處理的數據流。數據流圖中的計算節點用operator表示。COStream定義了composite結構,將不同節點連接構造成數據流圖。composite結構屬于高層次的復合結構,可以由一個或多個operator組成可重用的子數據流圖,是對SDF中可復用子圖的抽象。
目前COStream已成功應用在網絡媒體等領域,但是存在一些局限性:COStream是以C語言為基礎擴展而成的,需要對COStream語法進行進一步的完善與擴展,以提高語言的表達能力。楊秋吉等人在COStream的基礎上提出了面向Storm的編譯優化框架 。
4.5 TensorFlow
TensorFlow是一個針對深度學習的特定的數據流編程模型,它通過一些內置的函數將整個計算過程組成一張數據流圖,用于數值計算。圖6給出了一個簡單的數據流計算過程圖的例子,節點表示數學操作,邊表示2個節點之間依賴的多維數組(即張量)。TensorFlow根據數據流圖,自動地將計算任務調度到相應的計算資源上進行計算。用戶使用TensorFlow提供的接口構造數據流圖,描述業務的計算任務。
圖6???TensorFlow數據流圖
TensorFlow的框架十分靈活,具有良好的可移植性,TensorFlow目前支持多種計算平臺,包括臺式計算機、服務器、集群、移動端、云端服務器等。TensorFlow針對機器學習中的核心算法——梯度下降法中的求解微分運算進行優化,以實現機器學習算法在TensorFlow中的高效執行。TensorFlow簡化了用戶構建的深度學習的網絡模型,只需要定義模型的結構和目標函數即可形成一個網絡模型,在網絡模型的執行過程中,TensorFlow會自動計算相關的微分導數,實現參數求解。同時,TensorFlow支持多種語言,它提供了Python、C++、Java接口構建用戶程序,打破了編程語言的限制。
近幾年TensorFlow在機器學習領域得到了廣泛應用,特別是在深度學習領域取得了長足的發展。但是TensorFlow的本質并不是一個通用的分布式計算框架,它需要用戶在客戶端顯示指定集群信息,另外需要手動拉起進程(worker)等任務(task),在資源管理和使用方面有很多不便。因此,TensorFlow由于其用途單一、分布式能力弱、對大規模數據處理支持不足的特點,難以充分發揮大規模并行計算機系統的高性能計算算力。同時TensorFlow只是在任務調度的過程中使用了數據流的思想,其任務粒度比Codelet模型粗,任務的并發度比Codelet模型低。
4.6 小結
針對數據流的編程模型,傳統的軟件工程提供了一個利用數據流描述業務處理流程的需求分析方法。谷歌公司的開源項目Apache Beam為數據流編程結構提供了一個參考,提供了一個完整的數據流編程模型,還提供了基于Java和Python的接口開發包。也有些直接利用傳統的編程語言(如Python和Java)描述數據流執行的模型(如DAG),這些模型缺乏統一的數據流編程模型定義。另外,TensorFlow提供了一個針對深度學習的特定的數據流編程模型,其提供的編程模型通過一些內置的函數構建數據流計算圖,但是粒度很小,基本接近數據流執行模型。目前主要的數據流編程模型的特征對比見表1。
5 基于數據流的編程工具
傳統的基于數據流的編程工具有2類:一類是軟件工程中針對面向數據流的分析而設計的實例化(case)工具;另一類是面向運算級別的數據流編程工具。第一類是對業務模型的描述,相對于編程而言較為抽象,難以直接生產數據流程序;第二類偏向于對數據流執行模式的描述,其粒度較細,生產的代碼接近于可執行的指令結構。目前針對大數據處理平臺的數據流編程模型的編程工具主要分為3種形式。第一種形式是提供一個獨立的圖形化編輯器,可以通過可視化的模式構建數據流模型,從而提供數據流模型對應的代碼。這種工具一般基于一個固定的框架構建數據流模型。第二種形式是在一種開發工具中提供一個插件,實現數據流程序的編寫,并且利用開發工具提供的功能實現編譯和運行集成。第三種形式是提供一套數據流編程模型的函數庫,調用函數庫中的函數構建數據流模型。
5.1 圖形化數據流編程工具LabVIEW
LabVIEW針對虛擬儀器程序提供面向數據流的模型構建和運行的一整套軟件工具,包括采集、分析、顯示和存儲數據等一系列操作。LabVIEW中的程序框圖上的節點表示計算任務,只有所有必要輸入端的數據到達后才開始執行。節點執行后產生輸出端數據,并將該數據傳遞給數據流路徑中的下一個節點。數據流流動的過程描述了程序框圖上虛擬儀器程序和函數的執行順序。數據流計算圖如圖7所示。
圖7???數據流計算圖示例
5.2 COStream數據流程序圖形編輯器
COStream圖形編譯器是一個針對COStream編程語言的可視化編程工具,它將程序的編寫、編譯與運行集成在一起,方便用戶進行數據流模型的構建,簡化了開發過程。
COStream圖形編輯器主要包含程序同步數據流圖編輯和框架代碼生成2個部分,以開源集成開發環境(Eclipse)插件的形式集成在Eclipse中。數據流圖編輯器包含圖形的繪制連接、圖形編輯工具和圖形管理功能。框架代碼生成部分能夠自動根據數據流圖生成簡潔的框架代碼,并提供一定的框架優化策略。使用COStream圖形編輯器可以通過簡單的同步數據流編輯,生成對應的COStream代碼,減少程序員的開發工作量,提高了代碼編寫的效率,并利用一些策略提高了生產代碼的質量。COStream圖形編輯器的圖形繪制和代碼生成如圖8所示。
圖8???COStream圖形編輯器的圖形繪制和代碼生成
5.3 Oceanus-ML
Oceanus-ML旨在提供一套端到端(數據接入數據處理-特征工程-模型訓練-模型評估)的在線學習解決方案。Oceanus-ML包含多樣的數據處理函數,集成了豐富的在線學習及深度學習算法,用戶通過簡單的拖曳、填寫參數,即可搭建完整的訓練框架,并可輕松完成模型的訓練、評估、流程部署。
對于用戶來說,構建應用邏輯時,只需向畫布中拖曳算子、填寫參數、按邏輯連接算子,即可生成一個在線學習畫布應用。
5.4 Sucuri數據流編程庫
Sucuri是一個簡單的Python庫,它用簡單合理的語法提供了數據流編程。若要使用Sucuri庫對應用程序進行并行化處理,程序員僅需識別其代碼的并行化候選者,并實例化數據流圖即可,其中每個節點均與此類函數之一關聯,并且節點之間的邊緣描述了函數之間的數據依賴性。程序員可以使用Sucuri庫進行數據流編程,實現代表重要的并行編程模式的2個基準,并在多核集群上執行。Sucuri數據流編程庫構建的數據流圖和代碼如圖9所示。
圖9???Sucuri數據流編程庫構建的數據流圖和代碼
5.5 小結
目前的方法是將Apache Beam的函數庫作為第三方函數庫嵌入Java或者Python開發工具,在源代碼級編寫數據流程序,然后把編好的Java程序提交到Spark平臺運行。但Apache Beam沒有提供一種可視化開發工具。不同的數據流編程工具針對不同的領域,有些工具針對專用領域,有些工具面向通用領域,在易用性和可擴展性方面各有差異。上述數據流編程工具的特征對比見表2。
6 結束語
隨著大數據 2.0 時代的到來,大數據的應用從簡單的批處理擴展到了實時處理、流處理、交互式查詢和機器學習。早期的處理模型(map/reduce)早已力不從心,而且也很難應用到處理流程長且復雜的數據流水線上。另外,近年來涌現出很多大數據應用組件,如HBase、Hive、Kafka、Spark、Flink等。開發者經常要用到不同的技術、框架、API、開發語言和 SDK應對復雜應用的開發,這大大增加了編程的難度。隨著大數據應用的迅速發展,支持數據流計算的大數據處理平臺日漸成熟,面向大規模分布式數據流應用的編程成為快速開發和部署數據流應用系統的關鍵,要滿足面向大數據處理的數據流編程需求,需要符合以下3個特征。
● 能夠對接業務需求,提供類似軟件工程中DFD的豐富的數據流模型的業務描述能力,并且數據流編程模型能夠適應不同的用戶使用場景,提供與執行無關的抽象的統一編程模型。
● 能夠對接不同的執行平臺。數據流編程模型產生的代碼能夠部署到具體的大數據處理平臺上,通過其數據流執行引擎進行自動解釋和執行,不再需要開發人員的人工轉換。
● 提供能夠與執行環境適配、可擴展、可視化的數據流編程工具。編程工具能夠導入執行環境的參數和算子,提供直觀可拖曳的數據流模型圖的構建,并能夠自動實現數據流模型圖和數據流程序代碼之間的轉換。
作者簡介
鄒驍鋒(1996-),男,湖南大學信息科學與工程學院博士生,主要研究方向為并行計算、數據挖掘和機器學習 。
陽王東(1974-),男,湖南大學信息科學與工程學院教授,主要研究方向為分布式并行計算、機器學習 E-mail:yangwangdong@163.com。
容學成(1996-),男,湖南大學信息科學與工程學院碩士生,主要研究方向為大數據和機器學習 。
李肯立(1970-),男,博士,湖南大學信息科學與工程學院教授,主要研究方向為高性能計算、人工智能和大數據 。
李克勤(1963-),男,博士,湖南大學信息科學與工程學院教授,主要研究方向為并行計算、邊緣計算和大數據 。
大數據期刊
《大數據(Big Data Research,BDR)》雙月刊是由中華人民共和國工業和信息化部主管,人民郵電出版社主辦,中國計算機學會大數據專家委員會學術指導,北京信通傳媒有限責任公司出版的期刊,已成功入選中文科技核心期刊、中國計算機學會會刊、中國計算機學會推薦中文科技期刊,并被評為2018年國家哲學社會科學文獻中心學術期刊數據庫“綜合性人文社會科學”學科最受歡迎期刊。
關注《大數據》期刊微信公眾號,獲取更多內容
往期文章回顧
《大數據》2020年第3期目次&摘要
專題導讀:數據資產化探索
數據資產化框架初探
基于利潤最大化的數據資產價值評估模型
基于區塊鏈的數據市場
數據資產標準研究進展與建議
面向價值實現的數據資產管理體系構建
總結
以上是生活随笔為你收集整理的面向大数据处理的数据流编程模型和工具综述的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: BUUCTF-WEB:[强网杯 2019
- 下一篇: BUUCTF-WEB:[极客大挑战 20
