數(shù)據(jù)過程化處理敏捷方法_第1頁
數(shù)據(jù)過程化處理敏捷方法_第2頁
數(shù)據(jù)過程化處理敏捷方法_第3頁
數(shù)據(jù)過程化處理敏捷方法_第4頁
數(shù)據(jù)過程化處理敏捷方法_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)過程化處理的敏捷方法人:Gdevops全球敏捷運維contents過程化計算的特點和問題做到敏捷需要考慮的要點應(yīng)用場景和優(yōu)勢數(shù)據(jù)需求的三個層次許多工具能解決好

分析少量工具能部分處理關(guān)聯(lián)查詢用戶的需求點大部分在過程計算分析關(guān)聯(lián)查詢過程計算過程計算過程計算的普遍性銷售額占前一半的大客戶都有哪些?這個月內(nèi)連漲3天的

第4天還繼續(xù)上漲的比率有多大?哪些半年不出單的客戶在更換了銷售

半年就出單了?最復(fù)雜的計算是過程計算SQL不提倡分步計算分析、關(guān)聯(lián)查詢都不能解決過程計算自助之外,需技術(shù)

協(xié)助技術(shù)

協(xié)助的必要性抽象算法數(shù)據(jù)量大,無法導(dǎo)出數(shù)據(jù)源雜,不一定是數(shù)據(jù)庫,難以做關(guān)聯(lián)查詢數(shù)據(jù)集太多,都導(dǎo)出太繁瑣處理技術(shù)方面的常見問題SQL難寫封閉體系、常規(guī)數(shù)據(jù)類型、欠缺過程處理過程耦合、難調(diào)試、難管理工程轉(zhuǎn)化的難題數(shù)據(jù)庫、Hadoop;體系結(jié)構(gòu)臃腫工程語言和開源工具;可集

差數(shù)據(jù)處理操作化文本先入庫后計算ETL變成了LET高級語言的問題Java缺結(jié)構(gòu)化類庫;代碼冗長、不可復(fù)用動態(tài)結(jié)構(gòu)、描述能力弱;工作量大工具選擇和工程轉(zhuǎn)化數(shù)據(jù)模型和算法處理規(guī)模和性能做到敏捷需要考慮的要點開發(fā)環(huán)境即裝即用,配置簡單,功能完善執(zhí)行、調(diào)試執(zhí)行、單步執(zhí)行設(shè)置斷點網(wǎng)格結(jié)果所見即所得,易于調(diào)試;方便引用中間結(jié)果網(wǎng)格式代碼編寫風(fēng)格,比R、perl和python更直觀;可命令行調(diào)用,可定時計算豐富的外部數(shù)據(jù)接口RDB:Oracle,DB2,MS

SQL,MySQL,PG,….TXT/CSV,JSON/XML,EXCELHadoop:HDFS,HIVE,HBASEMongoDB,REDIS,…HTTP、ALI-OTS…內(nèi)置接口,即裝即用簡潔易懂的代碼語法體系設(shè)計目標(biāo)就是為了解決復(fù)雜過程運算天然分步、層次清晰、直接 單元格名無需定義變量專

的結(jié)構(gòu)化類專門針對結(jié)構(gòu)化數(shù)據(jù)表設(shè)計分組、循環(huán)排序、過濾集合運算有序集合全球敏捷運維集算器與SQL對比銷售額占前一半的大客戶1SELECT

CUSTOMER,

AMOUNT,

SUM_AMOUNT2FROM

(SELECT

CUSTOMER,

AMOUNT,3SUM(AMOUNT)

OVER(ORDER

BY

AMOUNT

DESC)SUM_AMOUNT4FROM

(SELECT

CUSTOMER,

SUM(AMOUNT)

AMOUNT5FROM

ORDERS

GROUP

BY

CUSTOMER))6WHERE

2

*

SUM_AMOUNT

<

(SELECTSUM(AMOUNT)

TOTAL

FROM

ORDERS)12A=orders.groups(CUSTOMER;sum(AMOUNT):AMOUNT).sort(AMOUNT:-1)=A1.derive(SUM_AMOUNT).run(SUM_AMOUNT=AMOUNT+SUM_AMOUNT[-1])3=A2.select(SUM_AMOUNT<=A1.sum(AMOUNT)/2)集算SQL與SQL這類本身就支持結(jié)構(gòu)化計算的語言相比,集算器的語法完善了對分步計算、集合化、有序計算和對象

等幾方面的支持;對于日期和字串等運算,集算器也比大部分SQL提供了更豐富的方法。SQL:單一數(shù)據(jù)庫內(nèi)開發(fā)環(huán)境部署簡單,

過程調(diào)試麻煩庫內(nèi)數(shù)據(jù)幾乎沒有外部數(shù)據(jù)接口,只能語法體系對過程計算支持得很不好復(fù)雜有序和集合的計算很麻煩有大數(shù)據(jù)透明化計算能力,但過程復(fù)雜時性能差過程可管理性較差Python:外部或跨庫數(shù)據(jù)/過程計算開發(fā)調(diào)試較簡單外部數(shù)據(jù)接口豐富,但開源包安裝麻煩語法體系不是專為結(jié)構(gòu)化數(shù)據(jù)計算設(shè)計Pandas類庫對于復(fù)雜運算支持得不夠缺乏自有的大數(shù)據(jù)方案代碼易于管理,但難于集成選擇可管理性開發(fā)效率環(huán)境配置SQL好低易過程差低難Python/R好Java差低難集算器好高易集

:工程轉(zhuǎn)化應(yīng)用無縫集成,代碼易于管理應(yīng)用程序集算器IDE數(shù)據(jù)計算層集算器(DFX)集算器JDBC數(shù)據(jù)

層(RDB、NoSQL、TXT、CSV、JSON、Hadoop)集算器數(shù)據(jù)源線程1線程2線程3ORAMSSQL本地文件HDFSmain.dfx單機(jī)模式多線程并行全球敏捷運維共享數(shù)據(jù)源方式:計算分布實現(xiàn),數(shù)據(jù)共享集算器數(shù)據(jù)源并行節(jié)點并行節(jié)點并行節(jié)點ORAMSSQL本地文件HDFSAB1=4.(“192.168.0.”/(10+~)/”:1234”)節(jié)點機(jī)列表,4個2forkto(8);A1到節(jié)點機(jī)上執(zhí)行,分成8個任務(wù)3=hdfsfile(“hdfs:\\\s.txt”)HDFS上的文件4=B3.cursor@t(;A2:8)分段游標(biāo)5=B4.select(gender==’M’).groups(;count(1):C)過濾并計數(shù)6=A2.conj().sum(C)匯總結(jié)果多機(jī)模式多機(jī)并行全球敏捷運維工具選擇和工程轉(zhuǎn)化數(shù)據(jù)模型和算法處理規(guī)模和性能做到敏捷需要考慮的要點離散性與集合化的有效結(jié)合集合化是批量計算的基本能力離散計算也不可或缺離散性支持更徹底的集合化離散性產(chǎn)生有序集合運算離散數(shù)據(jù)集集合運算游離成員=+徹底集合化/有序計算集算器計算模型更高的開發(fā)效率和執(zhí)行效率=>=>針對分組子集的聚合運算較復(fù)雜時難以用簡單聚合式寫出,保留分組子集再結(jié)合分步計算則很容易SQL不能保持子集,要用子查詢在原集上附加信息,導(dǎo)致多次計算A1=登錄表.group(uid;~.max(logtime):last,~.count(interval(logtime,last)<=3):num)計算任務(wù):用戶在最后一次登錄前三天內(nèi)的登錄次數(shù)12345WITH

T

AS(SELECT

uid,max(logtime)

last

FROM登錄表GROUP

BY

uid)SELECT

T.

uid,T.last,count(TT.logtime)FROM

T

LEFT

JOIN登錄表TT

ON

T.uid=TT.uidWHERE

T.last-TT.logtime<=3

GROUP

BY

T.uid,T.last分組子集聚合運算不一定總是SUM/COUNT這些,還可以理解為取出某個成員有離散性時可以簡單針對分組子集實施這種聚合A1=登錄表.group(uid).(~.minp(logtime))計算任務(wù):列出用戶首次登錄的記錄SELECT

*FROM(SELECT

RANK()OVER(PARTITION

BY

uid

ORDER

BY

logtime)rk,

T.*

FROM登錄表T)

TTWHERE

TT.rk=1;非常規(guī)聚合字段取值也可以是個集合,從而輕松描述主子表,適應(yīng)于多層結(jié)構(gòu)數(shù)據(jù)SQL沒有顯式集合數(shù)據(jù),沒有離散性也不能 記錄,要JOIN后再GROUPA1=訂單表.derive(訂單明細(xì).select(

==訂單表.

):明細(xì))建立子表集合字段2=A1.new(

,客戶,明細(xì).sum(單價*數(shù)量):金額)計算訂單金額計算任務(wù):由訂單明細(xì)計算金額1

SELECT訂單表.

,訂單表.客戶,SUM(訂單明細(xì).價格)234FROM訂單表LEFT

JOIN

訂單明細(xì)

ON訂單表.編碼=訂單明細(xì).GROUP

BY

訂單表.

,訂單表.客戶主子表A1= .sort(交易日).group@i(收盤價<收盤價[-1]).max(~.len())計算任務(wù):一支最長連續(xù)上漲了多少天另一種和次序有關(guān)的分組,條件成立時產(chǎn)生新組67SELECT

max(連續(xù)日數(shù))FROM(SELECT

count(*)連續(xù)日數(shù)FROM(SELECTSUM(漲跌標(biāo)志)OVER(ORDER

BY交易日)不漲日數(shù)FROM(SELECT交易日,CASE

WHEN收盤價>LAG(收盤價)OVER(

ORDER

BY交易日THEN

0

ELSE

1

END漲跌標(biāo)志FROM

))GROUP

BY不漲日數(shù))有序分組分組子集與有序計算的組合A1= .sort(交易日).group(代碼)2=A1.select((a=0,~.pselect(a=if(收盤價>收盤價[-1],a+1,0):3))>0).(代碼)計算任務(wù):找出連續(xù)上漲三天的)WITH

AAS(SELECT代碼,交易日,收盤價-LAG(收盤價)OVER

(PARITITION

BY代碼ORDER

BY漲幅)FROMB

AS(SELECT代碼,CASE

WHEN漲幅>0

ANDLAG(漲幅)OVER

(PARTITION

BY代碼ORDERBY交易日)>0

ANDLAG(漲幅,2)

OVER

PARTITION

BY代碼ORDER

BY交易日)>0THEN1

ELSE

0END三天連漲標(biāo)志FROM

A)SELECT

distinct代碼FROM

B

WHERE三天連漲標(biāo)志=1分組有序計算工具選擇和工程轉(zhuǎn)化數(shù)據(jù)模型和算法處理規(guī)模和性能做到敏捷需要考慮的要點單機(jī)大數(shù)據(jù)工具集遍歷1技術(shù)連接2解決

3格式使用4索引分段5并行游標(biāo)概念流式讀入數(shù)據(jù),每次僅計算一小部分延遲計算在游標(biāo)上定義運算,返回結(jié)果仍然是游標(biāo),可再定義運算不立即計算,最終

遍歷和計算AB1=file(“data.txt”).cursor@t()/創(chuàng)建游標(biāo)2=A1.select(product==“1”)/過濾3=A2.derive(

ty*price:amount)/計算列4=A3.sum(amount)/實際計算遍歷技術(shù)-延遲游標(biāo)外存計算優(yōu)化方向是減少

量可復(fù)用的遍歷減少外存

量一次遍歷可返回多個分組結(jié)果A1=file(“data.txt”).cursor()2=channel().groups(;count(1))配置同步計算3>A1.push(A2)綁定4=A1.sortx(key)排序,遍歷過程中處理綁定計算5=A2.result().#1取出綁定計算的結(jié)果,即

錄數(shù)6=A4.skip((A5-1)\2).fetch@x(2-A5%2).avg(key)取出中位數(shù)記錄并計算中位數(shù)遍歷技術(shù)-遍歷復(fù)用針對已有序的數(shù)據(jù)可一次遍歷實現(xiàn)大結(jié)果集分組運算,減少外存交換A1=file(“data.txt”).cursor@t()2=A1.groupx@o(uid;count(1),max(login))ABC1=file(“user.dat”).cursor@b()/按用戶id排序的源文件2for

A1;id…/從游標(biāo)中循環(huán)讀入數(shù)據(jù),每次讀出一組id相同3…/處理計算該組數(shù)據(jù)復(fù)雜處理需要讀出到程序內(nèi)存中再處理有序游標(biāo)有效減少查找和遍歷數(shù)量遍歷技術(shù)–有序游標(biāo)從一個集合計算出一個單值或另一個集合都可理解為聚合高復(fù)雜度的排序問題轉(zhuǎn)換為低復(fù)雜度的遍歷問題A1=file(“data.txt”).cursor@t()2=A1.groups(;top(10,amount))金額

10名的訂單3=A1.groups(area;top(10,amount))每個地區(qū)金額

10名的訂單遍歷技術(shù)-聚合理解指針化序號化有序歸并有序歸并123外鍵維表1:N同維表1:1主子表1:N連接解決-區(qū)分JOIN!外鍵需要隨機(jī)小量頻繁內(nèi)存指針查找大幅提高性能Java指針連接Oracle單表無連接0.57s0.623s五表外鍵連接2.3s5.1sA1=file(“Products.txt”).import()讀入商品列表2=file(“Sales.txt”).import()讀入銷售記錄3>A2.switch(productid,A1:id)建立指針式連接,把商品轉(zhuǎn)換成指針4=A2.sum(ty*productid.price)計算銷售金額,用指針方式商品單價ProductsidnamevendortypepriceSalesseqdateproductidty連接解決-外鍵指針化序號化相當(dāng)于外存指針化不需要再計算Hash值和比較A1=file(“Products.txt”).import()讀入商品列表2=file(“Sales.txt”).cursor()根據(jù)已序號化的銷售記錄建立游標(biāo)3=A2.switch(productid,A1:#)用序號定位建立連接指針,準(zhǔn)備遍歷4=A3.groups(;sum(

ty*productid.price))計算結(jié)果連接解決-外鍵序號化同維表和主子表連接可以先排序后變成有序歸并追加數(shù)據(jù)的再排序也仍然是低成本的歸并計算A1=file(“Order.txt”).cursor@t()訂單游標(biāo),按訂單id排序2=file(“Detail.txt”).cursor@t()訂單明細(xì)游標(biāo),也按訂單id排序3=joinx(A1:O,id;A2:D,id)有序歸并連接,仍返回游標(biāo)4=A3.groups(O.area;sum(D.amount))按地區(qū)分組匯總金額,地區(qū)字段在主表中,金額字段在明細(xì)子表中連接解決-有序歸并數(shù)據(jù)類型已存入,無須解析輕量級壓縮減少硬盤空間很少占用CPU時間泛型

,允許集合數(shù)據(jù)可追加格式-壓縮二進(jìn)制有序?qū)Ψ植檎矣行驍?shù)據(jù)提供對分查找,快速定位普通定位索引按鍵值找到數(shù)據(jù)兩段式索引提高

性能片狀索引連續(xù)記錄的索引使用索引文件線程1線程4線程2線程3并行處理需要將數(shù)據(jù)文件分段,每個線程處理一段簡單按字節(jié)分段按行分段去頭補(bǔ)尾的字節(jié)分段文本并行解析A1=file(“data.txt”).cursor@tm(amount)/定義并行取數(shù)的游標(biāo)(并行)2=A1.groups(;sum(amount):amount)/遍歷游標(biāo)匯總amount(串行)分段并行-文本分段分段數(shù)足夠大,以適應(yīng)變化的并行數(shù)每段記錄數(shù)相對平均數(shù)據(jù)追加時不必重寫所有數(shù)據(jù),保持連續(xù)性AB1=file(“data.bin”)2fork

4=A1.cursor@b(amount;A2:4)3=B2.groups(;sum(amount):a)4=A2.conj().sum(a)追加前追加后112324536748…10235121024513…分段并行-倍增分段有序數(shù)據(jù)的分段點要落在組邊界上才能分段并行同維表、主子表需同步分段A1=file(“userlog.txt”).cursor@t()原始數(shù)據(jù)游標(biāo)2=A1.sortx(id)按id排序3>file(“userlog.dat”).export@z(A2;id)寫成按id分段的文件A1=file(“Order.txt”).cursor@t()2=A1.sortx(id)按id排序3>file(“Order.dat”).export@z(A2;id)寫成按id分段的文件4=file(“Detail.txt”).cursor@t()5=A4.sortx(id)按id排序6>file(“Detail.dat”).export@z(A2;id,file(“Order.dat”),id

)和Order.dat同步按id分段分段并行-有序?qū)ξ环侄斡嬎闩R時需求報表后端計算輕量級大數(shù)據(jù)解決方案(略)應(yīng)用場景和優(yōu)勢計算臨時需求臨時需求的特征:以(準(zhǔn))結(jié)構(gòu)化數(shù)據(jù)為主大量涉及多樣性的外部數(shù)據(jù)源隨意性,需求不可常常涉及多步驟的過程計算只做一次,缺乏直接可復(fù)用性必要時可能轉(zhuǎn)變成日常計算計算臨時需求工具選擇要點:環(huán)境使用簡單開發(fā)快捷便利學(xué)習(xí)低成本應(yīng)用可集成報表問題報表是獲取數(shù)據(jù)的重要許多業(yè)務(wù)用戶只會看報表報表業(yè)務(wù)的不穩(wěn)定是常態(tài)要建立長期應(yīng)對機(jī)制報表的

點在于數(shù)據(jù)源占用大量開發(fā)時間報表模塊/平臺的目標(biāo)應(yīng)對報表的業(yè)務(wù)不穩(wěn)定性與應(yīng)用程序脫耦提高開發(fā)效率

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論