欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
關(guān)于用戶(hù)行為大數據計算

用戶(hù)行為類(lèi)數據的特點(diǎn)在于用戶(hù)數量龐大,但每個(gè)用戶(hù)的行為數量較小,針對用戶(hù)行為的計算較為復雜,用戶(hù)之間的關(guān)聯(lián)計算相對較少。

用戶(hù)數量龐大。通話(huà)記錄中的電話(huà)號碼、訪(fǎng)問(wèn)日志中的用戶(hù)編號、賬戶(hù)信息中的銀行賬戶(hù)、交易記錄中股票賬戶(hù)、保單信息中的被保險人,這些都是用戶(hù)行為類(lèi)數據中的用戶(hù)。用戶(hù)的數量通常都很龐大,多的可達億級或更多,少的也有百萬(wàn)級。

每個(gè)用戶(hù)的行為數量較小。相對于龐大的用戶(hù)數量,每個(gè)用戶(hù)的行為通常較少。對單個(gè)電話(huà)號碼來(lái)說(shuō),平均每月的通話(huà)記錄只有數百條,每年也不超過(guò)一萬(wàn)條。即使是網(wǎng)站的活躍用戶(hù),他們每天最多也只能產(chǎn)生上百條行為記錄,每年不超過(guò)十萬(wàn)條。

用戶(hù)行為的計算較為復雜。計算用戶(hù)的兩次登錄間隔天數、反復購買(mǎi)的商品、累積在線(xiàn)時(shí)間,這些都是針對用戶(hù)行為的計算,通常具有一定的復雜性。

用戶(hù)之間的關(guān)聯(lián)計算較少。用戶(hù)的行為相對獨立,一般不需要知道其他用戶(hù)即可實(shí)現計算。相應的,用戶(hù)之間的關(guān)聯(lián)計算則較少,比如:某人通話(huà)記錄中接聽(tīng)電話(huà)的一方的通話(huà)時(shí)長(cháng);社交網(wǎng)站上某個(gè)用戶(hù)的朋友購買(mǎi)了哪些商品,這些計算存在但不多。

根據用戶(hù)行為類(lèi)大數據的特點(diǎn)不難看出,其最直觀(guān)最容易寫(xiě)出的算法可以這樣設計:每次將某一用戶(hù)的所有數據一次性加載到內存中來(lái)計算,而不要反復訪(fǎng)問(wèn)硬盤(pán)讀取某個(gè)用戶(hù)的部分數據,也不要將大量用戶(hù)的數據同時(shí)加載到內存中。

將某一用戶(hù)的所有數據加載到內存中來(lái)計算。這樣做是因為用戶(hù)之間的關(guān)聯(lián)計算少,而單個(gè)用戶(hù)行為的計算較為復雜,計算同一個(gè)用戶(hù)的數據可以讓程序員減少不相干數據的干擾。比如計算某用戶(hù)反復購買(mǎi)的商品。首先,將某用戶(hù)的數據按商品分組匯總出每件商品的購買(mǎi)次數;再按次數逆序排序;過(guò)濾掉只購買(mǎi)了一次的商品,剩下的就是反復購買(mǎi)的商品及購買(mǎi)次數。再比如計算某用戶(hù)的累積在線(xiàn)時(shí)長(cháng)。該用戶(hù)會(huì )訪(fǎng)問(wèn)多次,每次都會(huì )形成一對登錄和退出,因此先要過(guò)濾出所有的登錄和退出記錄;再針對每一次訪(fǎng)問(wèn),用退出時(shí)刻減去登錄時(shí)刻,這就是單次時(shí)長(cháng);將多個(gè)單次時(shí)長(cháng)相加,就是累積時(shí)長(cháng)。

另外,因為每個(gè)用戶(hù)的行為數量相對較少,完全可以全部加載進(jìn)內存進(jìn)行自由靈活的計算。

不要反復訪(fǎng)問(wèn)硬盤(pán)讀取用戶(hù)的部分數據。由于用戶(hù)的行為計算比較復雜,同一個(gè)用戶(hù)的各條數據之間是存在關(guān)聯(lián)關(guān)系的,讀取一個(gè)用戶(hù)的部分記錄去計算會(huì )導致算法難寫(xiě),而且性能很低。

不要將大量用戶(hù)的數據同時(shí)加載到內存中。由于用戶(hù)數量龐大,顯然不可能將全部用戶(hù)的數據一次性加載到內存中來(lái),必須要分批讀取。分批的標準上面已經(jīng)分析出來(lái)了:按用戶(hù)分批。至于用戶(hù)之間計算結果的合并,可以留到最后一步再做,由于用戶(hù)之間關(guān)聯(lián)計算少,這個(gè)合并非常簡(jiǎn)單。比如計算所有用戶(hù)反復購買(mǎi)的商品或累計在線(xiàn)時(shí)長(cháng),只要計算出每個(gè)用戶(hù)反復購買(mǎi)的商品或累計的在線(xiàn)時(shí)長(cháng),再將所有用戶(hù)的計算結果簡(jiǎn)單合并就可以。另外還可以看出,由于是用戶(hù)之間的關(guān)聯(lián)少,因此此類(lèi)算法很適合使用并行計算,即每個(gè)節點(diǎn)機分配一定數量的用戶(hù),這樣既不會(huì )增加難度又能大幅提高性能。

將同一用戶(hù)的所有數據加載到內存中來(lái)計算,這就需要事先將數據按用戶(hù)分成多個(gè)組。比如按零售店會(huì )員分組,每個(gè)組就是某個(gè)會(huì )員對應的多條采購記錄;或按用戶(hù)編號分,每個(gè)組是某個(gè)用戶(hù)對應的網(wǎng)頁(yè)訪(fǎng)問(wèn)記錄。分組的實(shí)質(zhì)是排序,即將數據按用戶(hù)排序,使同一個(gè)用戶(hù)的數據挨在一起??梢韵胂蟮?,對億級的用戶(hù)、每用戶(hù)萬(wàn)級的數據排序將是個(gè)非常緩慢的過(guò)程。事先排序可以加速分組的過(guò)程。

將數據事先按用戶(hù)排序,不同的計算目標都使用同樣排序好的數據。將排序的時(shí)間花在前面而且只花一次,這就可以避免計算時(shí)的大排序,參數不同的同一個(gè)計算目標也可以重復計算而不必重復排序,不同的計算目標還可以省去相同的排序過(guò)程。

但是,不幸的是,一般的計算工具難以實(shí)現上述算法,無(wú)法有效利用事先排序的數據。比如SQL(含Hive)和MapRreduce。

SQL的困難。SQL的集合是無(wú)序的,事先按索引重新插入排好序的數據往往不能被優(yōu)化器正確優(yōu)化,具有很大的偶然性,無(wú)法保證查詢(xún)時(shí)可以按排好的次序查詢(xún)出需要的數據。

Hive具有SQL的語(yǔ)法風(fēng)格,同時(shí)也支持并行計算,但它卻并不適合用戶(hù)行為類(lèi)大數據計算。這是因為用戶(hù)行為的計算較為復雜,需要窗口函數甚至存儲過(guò)程來(lái)解決,而Hive只支持基本的SQL語(yǔ)法,不支持窗口函數和存儲過(guò)程。

用戶(hù)行為的計算之所以較為復雜,是因為需要對同一個(gè)用戶(hù)的多條數據之間進(jìn)行計算,這種計算大多和順序相關(guān)。SQL對有序計算的支持有限,只有窗口函數可以實(shí)現部分簡(jiǎn)單的有序計算,但對于復雜的業(yè)務(wù)邏輯仍然顯得非常繁瑣,而且經(jīng)常因為大排序造成低下的性能。使用程序性的存儲過(guò)程編寫(xiě)復雜代碼可以實(shí)現復雜的有序計算,但很難復用SQL的集合運算能力,所有處理都有從基礎運算自己編寫(xiě),而且其性能通常比SQL更低。

MapReduce的困難。MapReduce支持大數據并行計算,同時(shí)它是用程序性的JAVA語(yǔ)言來(lái)編寫(xiě)的,這一點(diǎn)和存儲過(guò)程有相似性。但是,MapReduce所使用的 JAVA語(yǔ)言缺乏針對結構數據計算的類(lèi)庫,所有的底層功能都要自己實(shí)現:分組、排序、查詢(xún)、關(guān)聯(lián)等等,對于有序計算這較復雜的算法所要書(shū)寫(xiě)的代碼更多、編寫(xiě)難度更大、維護更加困難。同樣的,MapReduce也無(wú)法利用已經(jīng)排序好的數據,在shuffle階段還需要得做大排序。

SQL和MapReduce無(wú)法利用事先排序好的數據,難以高性能地將同一用戶(hù)的所有數據加載到內存中來(lái)計算,用戶(hù)類(lèi)大數據計算因此會(huì )遇到性能、擴展性和開(kāi)發(fā)難度的挑戰。

如何利用事先排序好的數據,以此簡(jiǎn)化代碼書(shū)寫(xiě)難度并提高計算性能?

集算器是支持多節點(diǎn)并行計算的程序設計語(yǔ)言,并提供豐富的有序計算。如果數據事先排好序,集算器支持通過(guò)游標來(lái)按組讀取數據,每次讀取一組數據進(jìn)內存,避免反復的外存訪(fǎng)問(wèn),整個(gè)數據只要遍歷一次即可,從而使性能大大提高。針對組內計算復雜,集算器具有完備的批量化數據計算類(lèi)庫,可以輕松實(shí)現各類(lèi)復雜的有序計算。。

集算器支持靈活自由的多節點(diǎn)并行計算,可以進(jìn)一步優(yōu)化性能。方法之一將用戶(hù)按某種方式分段,以此實(shí)現分布存儲后的高效并行處理。比如將會(huì )員零售數據按照會(huì )員編號的前兩位分成100段存儲于HDFS,每段存儲十萬(wàn)會(huì )員的一億條數據?;蛘邔⒕W(wǎng)站日志按照用戶(hù)ID的首字母和年份分段,每段存儲幾百萬(wàn)用戶(hù)的數據?;蛘邔⑼ㄔ?huà)記錄按照區號和用戶(hù)數量合并為30段,每段存儲一個(gè)州或幾個(gè)州的用戶(hù)。經(jīng)過(guò)分段處理后,每段數據都是排好序的,可被節點(diǎn)機的一個(gè)線(xiàn)程獨立處理,這樣的并行計算性能更高。

針對上面的難點(diǎn),下面用”每個(gè)用戶(hù)在每種產(chǎn)品上的累積在線(xiàn)時(shí)間”為例來(lái)說(shuō)明集算器的一般解決辦法。

大分組的困難事先排序數據,以供多種計算目標使用。在節點(diǎn)機運算時(shí)可以直接按用戶(hù)分組取數,有效利用已經(jīng)有序的數據以提高性能。

組內計算復雜:esProc具有完備的批量化數據計算類(lèi)庫,可以輕松實(shí)現各類(lèi)復雜的有序計算。

完整的代碼如下:

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
大數據系統發(fā)展的技術(shù)路線(xiàn)
大數據行業(yè)必須掌握的25個(gè)大數據術(shù)語(yǔ)
大數據計算新貴Spark在騰訊雅虎優(yōu)酷成功應用解析
UC頭條:漫畫(huà): 什么是大數據?
Tachyon——以?xún)却鏋楹诵牡拈_(kāi)源分布式存儲系統
科普:一篇文章讓你知曉Spark
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久