免费亚洲欧美精品电影_国内精品偷拍福利视频_美女黄网站色视免费国产_国产不卡福利片在线观看

24小時(shí)咨詢(xún)電話(huà):0571-88023217農(nóng)業(yè)網(wǎng)站建設(shè)公司 10年專(zhuān)業(yè)網(wǎng)絡(luò)服務(wù)供應(yīng)商

資訊中心

- 直擊網(wǎng)站建設(shè)第一現(xiàn)場(chǎng),掌握全球化的消息 -

當(dāng)前位置 : 首頁(yè) > 資訊中心 > 【杭州網(wǎng)站建設(shè)】 數(shù)據(jù)可視化之美——《紐約時(shí)報(bào)》的一天

【杭州網(wǎng)站建設(shè)】 數(shù)據(jù)可視化之美——《紐約時(shí)報(bào)》的一天

分享 2011.08.04 瀏覽次數(shù):6864次

杭州網(wǎng)站建設(shè)】 數(shù)據(jù)可視化之美——《紐約時(shí)報(bào)》的一天

你是否曾經(jīng)想過(guò)《紐約時(shí)報(bào)》網(wǎng)站的讀者會(huì)涵蓋什么類(lèi)型的人?我們想過(guò)。我們還在想他們傾向于在一天之中的什么時(shí)候來(lái)訪問(wèn)網(wǎng)站,使用什么工具訪問(wèn)以及他們都來(lái)自哪里?從他們是誰(shuí)到在什么時(shí)候、以什么方式以及為什么等,所有這些問(wèn)題都在我們的思考范圍之內(nèi)。

本文將要介紹的這個(gè)可視化項(xiàng)目源于在《紐約時(shí)報(bào)》研發(fā)試驗(yàn)室一次午餐時(shí)就這個(gè)話(huà)題開(kāi)展的一次簡(jiǎn)單討論。正如你將看到的,從非常簡(jiǎn)單的基于地理的數(shù)據(jù)集合開(kāi)始,很快就深入到海量數(shù)據(jù)和潛在可視化。最終,我們創(chuàng)建了一個(gè)可視化用于顯示每天《紐約時(shí)報(bào)》Web站點(diǎn)和手機(jī)站點(diǎn)在世界和美國(guó)的流量。

收集一些數(shù)據(jù)

為了對(duì)Web站點(diǎn)和手機(jī)站點(diǎn)24小時(shí)的流量進(jìn)行可視化,我們需要?jiǎng)?chuàng)建一個(gè)可以從《紐約時(shí)報(bào)》的訪問(wèn)日志中抽取和清洗數(shù)據(jù)的程序??紤]到我們想要?jiǎng)?chuàng)建一個(gè)可以顯示在一天內(nèi)網(wǎng)站的訪問(wèn)次數(shù)的可視化并且是一個(gè)基于地理信息進(jìn)行展示的可視化,我們需要的數(shù)據(jù)包括:

在24小時(shí)內(nèi),用戶(hù)每次訪問(wèn)Web站點(diǎn)或手機(jī)站點(diǎn)的時(shí)間戳。每個(gè)用戶(hù)每次訪問(wèn)時(shí)所處位置的經(jīng)度和緯度。

原始的訪問(wèn)日志包含了人們?cè)L問(wèn)Web站點(diǎn)和手機(jī)站點(diǎn)的很多有用的信息(比如每個(gè)訪問(wèn)者使用什么瀏覽器);但其中有很多信息對(duì)我們而言是沒(méi)有用的,因此需要把它們從日志信息中過(guò)濾掉。此外,日志中并不包括每個(gè)用戶(hù)每次訪問(wèn)時(shí)的經(jīng)緯度信息,因此這是我們?cè)谌罩?ldquo;清洗”過(guò)程中需要添加的信息。

《紐約時(shí)報(bào)》Web站點(diǎn)月獨(dú)立訪問(wèn)讀者約2000萬(wàn)。這意味著,在任何一天Web站點(diǎn)和手機(jī)站點(diǎn)上都有幾百萬(wàn)次的頁(yè)面瀏覽(或點(diǎn)擊);這是我們準(zhǔn)備為可視化收集的基礎(chǔ)數(shù)據(jù)。

數(shù)據(jù)清洗

對(duì)于可視化以及其他日志數(shù)據(jù)的分析,我們只對(duì)來(lái)自人們的在Web站點(diǎn)和手機(jī)站點(diǎn)的點(diǎn)擊數(shù)感興趣——而不是來(lái)自網(wǎng)絡(luò)爬蟲(chóng)、機(jī)器人或抓取程序。為了過(guò)濾這些不必要的數(shù)據(jù),我們實(shí)現(xiàn)了一段Java代碼用于識(shí)別出非人工的訪問(wèn)日志并將其從日志中刪除。

每天Web站點(diǎn)原始的日志數(shù)據(jù)訪問(wèn)量大約有500MB~700MB(壓縮格式),手機(jī)站點(diǎn)的訪問(wèn)量約80MB~100MB(壓縮格式)。在數(shù)據(jù)清洗過(guò)程中,我們執(zhí)行了IP到經(jīng)緯度的轉(zhuǎn)換,從而得到每個(gè)訪問(wèn)用戶(hù)的精確位置。原始訪問(wèn)日志中已經(jīng)包含了用戶(hù)的IP地址,然后我們使用商業(yè)數(shù)據(jù)庫(kù)把IP轉(zhuǎn)換成地理位置信息。有很多公司提供GeoIP(地理位置IP)數(shù)據(jù)庫(kù),用于實(shí)現(xiàn)該轉(zhuǎn)換。

一旦數(shù)據(jù)被清洗完畢并準(zhǔn)確地進(jìn)行了地理位置編碼,只需要對(duì)數(shù)據(jù)再做最后一輪處理。由于原始的訪問(wèn)日志的收集、存儲(chǔ)和清理方式,新清洗完的數(shù)據(jù)是存放在多個(gè)文件中的,需要對(duì)它們排序之后合并到一個(gè)結(jié)果文件中去,該文件將包含可視化所需的數(shù)據(jù),即一天訪問(wèn)數(shù)據(jù)。

每天“清洗”后的網(wǎng)站日志數(shù)據(jù)被存儲(chǔ)到360個(gè)文件中,每個(gè)文件大小約30MB~40MB(壓縮格式)。由于每行中增加了一些額外的字段,如GeoIP 信息,“清洗”后的日志文件要大于原始文件。手機(jī)站點(diǎn)數(shù)據(jù)集小得多,因此清洗后的數(shù)據(jù)存儲(chǔ)在一個(gè)文件中,大約70MB(壓縮格式)。我們每天需要整理當(dāng)天的每個(gè)清洗后的日志文件,并創(chuàng)建按照對(duì)Web站點(diǎn)和手機(jī)站點(diǎn)的訪問(wèn)時(shí)間戳以及訪問(wèn)者所在的經(jīng)緯度排序的單個(gè)文件(Web站點(diǎn)和手機(jī)站點(diǎn)分別生成一個(gè)文件)。

Python、Map/Reduce和Hadoop

我們用Python語(yǔ)言創(chuàng)建了一個(gè)簡(jiǎn)單的map/reduce腳本,可以從清洗后的日志文件中過(guò)濾掉所有不需要的數(shù)據(jù),并輸出以逗號(hào)作為分隔符的數(shù)據(jù),最后還會(huì)對(duì)數(shù)據(jù)進(jìn)行排序。我們使用Amazon的彈性MapReduce Web服務(wù),它允許我們?cè)诤芏嗷贖adoop的EC2的運(yùn)行實(shí)例中運(yùn)行Python實(shí)現(xiàn)的map/reduce。Amazon的EC2運(yùn)行實(shí)例的“配置”不同(低配、中配和高配),不同的配置會(huì)提供不同的RAM、CPU核數(shù)和內(nèi)存,因此我們?cè)诤芏郋C2實(shí)例中試驗(yàn)運(yùn)行map/reduce代碼,從而找到性?xún)r(jià)比最好的配置。數(shù)據(jù)處理需要約10~20分鐘(價(jià)值幾美元),具體所耗時(shí)間會(huì)依賴(lài)于機(jī)器的數(shù)量(我們從4~10臺(tái)都嘗試了一遍)和EC2實(shí)例的配置(我們嘗試了低配和中配)。

map/reduce(Hadoop)Job的輸出結(jié)果是很多有序的文件,這些文件保存在Amazon的S3桶(buckets)中。為了在可視化中把數(shù)據(jù)放到一個(gè)文件中(與前述方式相同,Web站點(diǎn)和手機(jī)站點(diǎn)分別存儲(chǔ),各自有一個(gè)獨(dú)立文件),我們從S3下載結(jié)果文件到本地,然后按照傳統(tǒng)的方法進(jìn)行排序和歸并?,F(xiàn)在,數(shù)據(jù)已經(jīng)按照期望的方式保存在一個(gè)文件中了,可視化的準(zhǔn)備工作已經(jīng)完成。

可視化的第一步

我們?cè)诳梢暬献龅牡谝粋€(gè)嘗試是創(chuàng)建了一個(gè)簡(jiǎn)單的世界地圖,將一天之中對(duì)《紐約時(shí)報(bào)》Web站點(diǎn)的每次訪問(wèn)用一個(gè)小的黃色圓圈表示,對(duì)移動(dòng)站點(diǎn)的每次訪問(wèn)用一個(gè)小的藍(lán)色圓圈表示。除了全球范圍的視圖,我們還希望創(chuàng)建一個(gè)聚焦(或縮放)于美國(guó)的視圖。

Processing

Processing(面向設(shè)計(jì)的開(kāi)源編程語(yǔ)言和集成開(kāi)發(fā)環(huán)境)被選作可視化工具,有幾個(gè)原因。首先,《紐約時(shí)報(bào)》研發(fā)小組中有些人已經(jīng)有使用Processing完成小的數(shù)據(jù)可視化的項(xiàng)目經(jīng)驗(yàn),他們還擁有使用傳感器作為數(shù)據(jù)收集設(shè)備進(jìn)行探索的經(jīng)驗(yàn)。此外,我們都是Casey Reas(Processing創(chuàng)始人)、Ben Fry和Aaron Koblin使用該工具所創(chuàng)造的作品的超級(jí)粉絲,我們認(rèn)為Processing將會(huì)成為對(duì)海量數(shù)據(jù)進(jìn)行可視化的理想工具。

對(duì)于該可視化,我們需要做的第一件事是將網(wǎng)站的訪問(wèn)用戶(hù)的經(jīng)緯度信息映射到Processing中的二維可視化圖形中。Aaron Koblin友情提供了一些他在前一個(gè)項(xiàng)目中實(shí)現(xiàn)該功能的代碼——很不錯(cuò)的、緊湊的Java類(lèi),可以把經(jīng)緯度組轉(zhuǎn)換成x、y坐標(biāo)。我們需要做的就是向Java庫(kù)傳遞數(shù)據(jù)文件中的經(jīng)緯度元組,Java庫(kù)就會(huì)返回x、y坐標(biāo)。然后,我們把這些坐標(biāo)值傳給Processing的繪圖API來(lái)定位《紐約時(shí)報(bào)》Web站點(diǎn)和手機(jī)站點(diǎn)的每個(gè)用戶(hù)的位置。

基礎(chǔ)層地圖

創(chuàng)建基礎(chǔ)層地圖所需的時(shí)間會(huì)遠(yuǎn)遠(yuǎn)超過(guò)你的想象。首先,我們需要對(duì)美國(guó)和世界做出準(zhǔn)確的表示。經(jīng)過(guò)大量的數(shù)據(jù)探索后,我們最終使用加州大學(xué)洛杉磯分校的CENS組數(shù)據(jù)集,它描繪了世界上每座城市的經(jīng)緯度坐標(biāo)。

在使用該數(shù)據(jù)集的初始階段,每當(dāng)程序啟動(dòng)時(shí),直接在Processing集成環(huán)境中進(jìn)行渲染,但這個(gè)渲染花費(fèi)的時(shí)間比我們期望的要多很多;因?yàn)橹涝摂?shù)據(jù)不會(huì)變,最后,我們創(chuàng)建了一個(gè)JPEG地圖,向背景地圖中加載一個(gè)非常小的文件。這種方式給我們節(jié)省了好幾分鐘的渲染時(shí)間(當(dāng)解析大數(shù)據(jù)集時(shí),這部分工作所需的時(shí)間會(huì)更長(zhǎng))和處理能力,并且成為所有后續(xù)的數(shù)據(jù)輸出和視頻的背景。

剛剛處理的數(shù)據(jù)哪去了

有了緯經(jīng)度投影代碼和地圖輪廓,我們開(kāi)始在地圖上描繪交通數(shù)據(jù)圖。在可視化初期,我們使用不包含重大新聞的任意一天的數(shù)據(jù)(2009年2月15日)。這一天的Web站點(diǎn)和手機(jī)站點(diǎn)的流量/訪問(wèn)次數(shù)和平均值一致。

我們之前已經(jīng)對(duì)數(shù)據(jù)進(jìn)行過(guò)清洗、排序和添加地理位置編碼,包含了時(shí)間戳、Web站點(diǎn)和手機(jī)站點(diǎn)上給定一天的用戶(hù)每次查看/點(diǎn)擊時(shí)所處的緯度/經(jīng)度值。現(xiàn)在到了創(chuàng)建一個(gè)Processing應(yīng)用程序的時(shí)刻了,它可以?huà)呙鑇eb站點(diǎn)和手機(jī)站點(diǎn)的日志文件,對(duì)于用戶(hù)的每次查看/點(diǎn)擊,會(huì)在地圖上描繪一個(gè)基于用戶(hù)點(diǎn)擊時(shí)所在位置而生成的點(diǎn)。

場(chǎng)景1,步驟1

Processing應(yīng)用在絕大多數(shù)情況下由兩部分組成:?jiǎn)?dòng)(setup)和循環(huán)繪制(draw)。在Processing應(yīng)用的setup()函數(shù)中,你可以執(zhí)行應(yīng)用需要的任何工作,比如變量初始化、打開(kāi)輸入文件、字體加載等。循環(huán)繪制是Processing代碼的根本。Processing應(yīng)用中的draw()函數(shù)通常每秒鐘會(huì)被調(diào)用30~60次(這是時(shí)間幀速率)。

我們第一次嘗試的代碼盡管存在一些問(wèn)題,但能夠生成一些可以在屏幕上觀看的畫(huà)面。可以多次運(yùn)行該應(yīng)用程序,查看圖片中描繪的點(diǎn),這些點(diǎn)表示《紐約時(shí)報(bào)》Web站點(diǎn)和手機(jī)站點(diǎn)一天的流量。隨時(shí)間變化的流量的模式讓人難以置信——畫(huà)面看起來(lái)似乎是活生生的,閃爍的燈光散布在整個(gè)地球上,如圖1所示。

這是偉大的第一步,但我們的代碼和方法都需要做些修改。以下是需要改進(jìn)的三個(gè)方面。

 

圖1  原始可視化顯示了《紐約時(shí)報(bào)》Web站點(diǎn)和手機(jī)站點(diǎn)在全世界的流量——黃色圓圈表示W(wǎng)eb站點(diǎn)的流量,藍(lán)色圓圈表示手機(jī)站點(diǎn)的流量

 

沒(méi)有具體比例

首先,該可視化沒(méi)有顯示來(lái)自每個(gè)用戶(hù)位置的Web站點(diǎn)和手機(jī)站點(diǎn)的流量的比例。比如,在一天的某個(gè)時(shí)刻,可能有很多Web站點(diǎn)和手機(jī)站點(diǎn)的用戶(hù)是來(lái)自相同的地方,比如紐約,可以看到有非常高的流量。有時(shí),可能有成千上萬(wàn)用戶(hù)來(lái)自同一個(gè)地理位置。同樣,假如是紐約!

在該應(yīng)用程序的最初版本中,日志文件中出現(xiàn)的每個(gè)地理位置(一組經(jīng)緯度值)在地圖上都使用相同大小的點(diǎn)表示。為了能夠表示比例,需要基于與某個(gè)位置關(guān)聯(lián)的用戶(hù)量來(lái)調(diào)整每個(gè)位置的可視化表示(地圖上的藍(lán)色和黃色點(diǎn))。

其次,因?yàn)辄S色(表示W(wǎng)eb站點(diǎn)流量)和藍(lán)色(表示手機(jī)站點(diǎn)流量)點(diǎn)大小相同,而我們(在繪制循環(huán)中)先畫(huà)表示W(wǎng)eb站點(diǎn)的點(diǎn),再畫(huà)表示手機(jī)站點(diǎn)的點(diǎn),當(dāng)兩種點(diǎn)擊類(lèi)型位于同一個(gè)地理位置時(shí),藍(lán)色點(diǎn)會(huì)覆蓋黃色點(diǎn)。這對(duì)可視化而言不是一個(gè)好的選擇。

沒(méi)有考慮時(shí)間

在可視化的第一階段,我們沒(méi)有考慮人們?cè)赪eb站點(diǎn)或手機(jī)站點(diǎn)上每次訪問(wèn)或頁(yè)面查看所花費(fèi)的時(shí)間,只是簡(jiǎn)單地在地圖上為每次訪問(wèn)畫(huà)了一個(gè)點(diǎn),在可視化的整個(gè)過(guò)程中都不再管它了。這樣,就沒(méi)有人會(huì)注意到在某些大城市《紐約時(shí)報(bào)》有持續(xù)較大的流量,而在一些小的偏遠(yuǎn)地區(qū)我們可能一天只有幾次查看,這種表示方式會(huì)使我們錯(cuò)誤地認(rèn)為這些地區(qū)整天都有流量。

我們需要解決這個(gè)問(wèn)題,并結(jié)合比例表示問(wèn)題,也就是說(shuō),我們需要提出一種新的方法,可以精確地表示從任何一個(gè)位置有多少人訪問(wèn)該網(wǎng)站,以及他們?cè)谀称恼律贤A袅硕嚅L(zhǎng)時(shí)間,或者在整個(gè)網(wǎng)站上停留的時(shí)間。

定時(shí)拍攝

最后,我們選擇將整天的數(shù)據(jù)流量創(chuàng)建成為一個(gè)定時(shí)拍攝視頻,從而使我們能夠在整個(gè)《紐約時(shí)報(bào)》公司內(nèi)共享該可視化。為了解決這個(gè)問(wèn)題,我們決定使用Processing的一個(gè)內(nèi)置的視頻庫(kù),它能夠?qū)⒀h(huán)繪制生成的時(shí)間幀保存到視頻文件中,進(jìn)而創(chuàng)建出很清晰的電影形式的輸出。

場(chǎng)景1,步驟2

在第一個(gè)版本代碼基礎(chǔ)之上,我們?cè)黾恿送ㄟ^(guò)Processing的MovieMaker庫(kù)將可視化捕獲并保存到一個(gè)文件中的功能。我們還增加了應(yīng)用支持,能夠使一對(duì)Web站點(diǎn)或手機(jī)站點(diǎn)的每次點(diǎn)擊的可視化都能夠體現(xiàn)該次訪問(wèn)的生命周期。平均來(lái)說(shuō),Web站點(diǎn)和手機(jī)站點(diǎn)這兩個(gè)站點(diǎn)的一次訪問(wèn)時(shí)間是歷時(shí)3~4分鐘。因此,在迭代過(guò)程中,不再是在地圖上畫(huà)一個(gè)點(diǎn)并在后面整整24小時(shí)都不管它,我們嘗試慢慢地每3分鐘淡出消減一個(gè)點(diǎn)。當(dāng)然,一個(gè)獨(dú)立用戶(hù)不是每3分鐘對(duì)Web站點(diǎn)或手機(jī)站點(diǎn)執(zhí)行一次點(diǎn)擊——日志文件中顯示的很多點(diǎn)擊都是來(lái)自同一批用戶(hù),或者是用了更長(zhǎng)的時(shí)間瀏覽了網(wǎng)站的很多頁(yè)面的用戶(hù)。但是為了避免可視化的最初版本過(guò)于復(fù)雜,我們就籠統(tǒng)地認(rèn)為每次對(duì)網(wǎng)站的訪問(wèn)都是“3分鐘訪問(wèn)”。

對(duì)于這種簡(jiǎn)化的表示,我們需要保存一天內(nèi)的每次查看/點(diǎn)擊淡出3分鐘以上的點(diǎn)。這意味著需要在內(nèi)存中存儲(chǔ)很多對(duì)象。對(duì)于每秒鐘內(nèi)Web站點(diǎn)和手機(jī)站點(diǎn)上的每次點(diǎn)擊,我們都會(huì)在Processing應(yīng)用程序中創(chuàng)建一個(gè)對(duì)象,它的任務(wù)是保存該點(diǎn)擊的“生命周期”,也就是說(shuō),這個(gè)點(diǎn)需要在屏幕上停留多長(zhǎng)時(shí)間(3分鐘),使用這些對(duì)象來(lái)幫助我們?cè)诳梢暬恼麄€(gè)周期內(nèi)對(duì)點(diǎn)實(shí)現(xiàn)淡出效果。

因此,再回過(guò)來(lái)看Processing的繪制循環(huán)。我們還是每秒鐘從Web和手機(jī)站點(diǎn)的日志文件中讀取數(shù)據(jù),但對(duì)于每次單擊,創(chuàng)建一個(gè)Hit(單擊)對(duì)象,其初始生命周期設(shè)置為3分鐘,初始不透明度是100%(這些值在迭代循環(huán)的每次繪制中不斷減少)。讀完日志數(shù)據(jù)后,遍歷內(nèi)存中Hit對(duì)象集合。對(duì)于每個(gè)Hit對(duì)象,重新描繪表示該單擊的點(diǎn),其透明度是基于該單擊剩余的生命周期,在3分鐘時(shí)間內(nèi)把它淡出。當(dāng)每個(gè)Hit對(duì)象達(dá)到生命周期時(shí),把它從內(nèi)存中刪除,并從地圖上刪除相應(yīng)點(diǎn)(即不再重新描繪它)。

因?yàn)槊棵腌姶蠹s需要對(duì)400~500次點(diǎn)擊進(jìn)行可視化,這種方法意味著任何時(shí)刻都需要在內(nèi)存中存儲(chǔ)很多對(duì)象,來(lái)保存所有點(diǎn)擊軌跡。

可視化的第二步

為了實(shí)現(xiàn)想要的可視化,除增加支持能夠顯示每個(gè)地理位置的流量比例,需要對(duì)應(yīng)用程序進(jìn)行優(yōu)化,還需要重新思考如何收集數(shù)據(jù)。

重新回到比例問(wèn)題

每秒鐘顯示每次點(diǎn)擊并不能顯示任何比例。在第一版的應(yīng)用程序中,來(lái)自加拿大農(nóng)村地區(qū)的少量的點(diǎn)擊和來(lái)自紐約的成千上萬(wàn)的點(diǎn)擊,其可視化權(quán)重是一樣的。此外,從內(nèi)存和處理器對(duì)可視化進(jìn)行渲染的處理能力而言,每秒鐘顯示所有的點(diǎn)擊代價(jià)太高。

想清楚后,我們認(rèn)為答案是對(duì)每分鐘每個(gè)地理位置的點(diǎn)擊次數(shù)進(jìn)行可視化,而不是每秒鐘進(jìn)行可視化。對(duì)于訪問(wèn)日志文件中的每分鐘的數(shù)據(jù),我們會(huì)累加每個(gè)地理位置的點(diǎn)擊總數(shù)。這種方式使得可視化結(jié)果可以顯示每個(gè)地理位置的流量比例,而且會(huì)極大地減少Processing應(yīng)用程序的原始數(shù)據(jù)輸入。但是,這種方式意味著我們需要改變數(shù)據(jù)處理和map/reduce作業(yè)。

進(jìn)一步處理數(shù)據(jù)

之前用Python實(shí)現(xiàn)的map/reduce腳本,其目的是從原始訪問(wèn)日志中解析出我們需要的數(shù)據(jù),并基于時(shí)間對(duì)數(shù)據(jù)進(jìn)行排序,因此,需要做些修改?,F(xiàn)在,該腳本需要對(duì)每分鐘、每個(gè)地理位置(一組緯度/經(jīng)度值)的所有點(diǎn)擊進(jìn)行計(jì)數(shù),輸出結(jié)果數(shù)據(jù)并根據(jù)訪問(wèn)時(shí)間進(jìn)行排序。

從根本上說(shuō),map/reduce是一個(gè)編程模型,支持海量數(shù)據(jù)處理。其處理過(guò)程分成兩個(gè)任務(wù):mapping(映射)和reducing(規(guī)約)。Mapper通常是接收一些輸入(在我們的例子中是日志文件),對(duì)數(shù)據(jù)做一些較小的處理,然后以鍵/值(key/value)對(duì)的方式輸出數(shù)據(jù)。Reducer的任務(wù)是接收Mapper的輸出結(jié)果數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行歸并或規(guī)約,通常生成較小的數(shù)據(jù)集。在我們的應(yīng)用程序中,Mapper腳本讀入原始的訪問(wèn)日志文件,對(duì)于每一行,以如下格式輸出鍵/值對(duì):

Timestamp of the access (in HH:MM format),latitude,longitude 1

在這個(gè)例子中,key是以逗號(hào)作為分隔符,包含了日志文件中每次點(diǎn)擊的時(shí)間戳、緯度、經(jīng)度,而value是1(表示一次點(diǎn)擊計(jì)數(shù)值)。

然后,Reducer逐行讀取Mapper的輸出,保存每分鐘每個(gè)地理位置的點(diǎn)擊計(jì)數(shù)值。因此,它把Mapper輸出的每個(gè)“key”存儲(chǔ)到一個(gè)Python字典中,每次遇到Mapper的輸出有相同的“key”,就把其在字典中的計(jì)數(shù)值增加1。Python字典看起來(lái)大概如下:

{

“12:00,40.7308,-73.9970″: 128,

“12:00,37.7791,-122.4200″: 33,

“12:00,32.7781, -96.7954″: 17,

# cut off for brevity…

“12:01,40.7308,-73.9970″: 119,

“12:01,37.7791,-122.4200″: 45,

“12:01,32.7781, -96.7954″: 27,

# …

}

一旦Reducer讀取了Mapper的所有的數(shù)據(jù)輸入,它對(duì)數(shù)據(jù)進(jìn)行排序(基于key),然后輸出排序的結(jié)果。

新的數(shù)據(jù)格式

在原始訪問(wèn)數(shù)據(jù)上運(yùn)行完新的map/reduce腳本后,我們得到了一組更準(zhǔn)確的數(shù)據(jù)集。這個(gè)過(guò)程不僅減少了總的數(shù)據(jù)量(Web站點(diǎn)的訪問(wèn)數(shù)據(jù),從3000萬(wàn)行左右減少到300萬(wàn)行),而且為我們生成了每個(gè)地理位置的計(jì)數(shù)值。現(xiàn)在,我們需要確定比例因子。以下是新的結(jié)果數(shù)據(jù)的樣本——注意時(shí)間戳、緯度、經(jīng)度和(每分鐘的)點(diǎn)擊計(jì)數(shù)值。

12:00,039.948,-074.905,128

12:00,039.949,-082.057,1

12:00,039.951,-105.045,3

12:00,039.952,-074.995,1

12:00,039.952,-075.164,398

12:00,039.960,-075.270,1

12:00,039.963,-076.728,4

12:00,039.970,-075.832,2

12:00,039.970,-086.160,4

12:00,039.975,-075.048,23

可視化比例和其他可視化優(yōu)化

有了新形式的數(shù)據(jù),我們不再是每秒鐘為每次點(diǎn)擊畫(huà)一個(gè)點(diǎn),而是可以每分鐘為每個(gè)地理位置的點(diǎn)擊數(shù)值畫(huà)一個(gè)圓圈,并根據(jù)點(diǎn)擊數(shù)計(jì)算圓圈大小。這種方式可以生成期望的比例顯示,使得可視化的讀者可以輕松地區(qū)分來(lái)自加拿大農(nóng)村和紐約市的不同的流量差別。

這種方式也極大地減少了應(yīng)用程序需要的內(nèi)存量。我們還是需要在內(nèi)存中保存Web站點(diǎn)和手機(jī)站點(diǎn)的所有點(diǎn)擊(這樣我們才能消隱去時(shí)間超過(guò)3分鐘的點(diǎn)擊),但是因?yàn)槲覀儸F(xiàn)在保存的是每分鐘每個(gè)地理位置的點(diǎn)擊數(shù),極大地減少了需要的Hit對(duì)象數(shù)量。對(duì)于任一分鐘,來(lái)自全世界的流量通常包含2000~3500個(gè)不同的地理位置。每個(gè)位置的Hit對(duì)象必須存儲(chǔ)在內(nèi)存中;每個(gè)Hit對(duì)象生命期是3分鐘,因此對(duì)于任一時(shí)刻,內(nèi)存中可能有6000~12 000個(gè)對(duì)象——數(shù)量還是很多,但是已經(jīng)遠(yuǎn)遠(yuǎn)小于前一版本的對(duì)象數(shù)量。

現(xiàn)在,需要更新Processing應(yīng)用程序,從而可以實(shí)時(shí)保存每個(gè)位置在任一時(shí)刻的點(diǎn)擊數(shù),而且圓圈大小比例可以根據(jù)點(diǎn)擊數(shù)調(diào)整。

使定時(shí)拍攝能夠正常工作

對(duì)Processing應(yīng)用程序進(jìn)行升級(jí)使其能夠處理新的數(shù)據(jù)格式和方法,在此之后,我們創(chuàng)建了一個(gè)完整的歷時(shí)24小時(shí)的定時(shí)拍攝視頻。我們新的代碼每次能夠正常運(yùn)行幾個(gè)小時(shí),不存在之前遇到的內(nèi)存和整體機(jī)器延時(shí),現(xiàn)在是生成完整的定時(shí)拍攝視頻的時(shí)候了。不再像第一次那樣嘗試在地圖上為歷時(shí)24小時(shí)定時(shí)拍攝渲染W(wǎng)eb站點(diǎn)和手機(jī)站點(diǎn)數(shù)據(jù),我們只使用手機(jī)站點(diǎn)的數(shù)據(jù)(其數(shù)據(jù)量大約是Web站點(diǎn)數(shù)據(jù)量的10%)。這樣,我們就可以比同時(shí)渲染W(wǎng)eb站點(diǎn)和手機(jī)站點(diǎn)數(shù)據(jù)更快地查看到結(jié)果或者發(fā)現(xiàn)可能存在的問(wèn)題。

 

圖2 《紐約時(shí)報(bào)》手機(jī)站點(diǎn)在2009年6月25日這一天在美國(guó)的流量

 

 

圖3 《紐約時(shí)報(bào)》手機(jī)站點(diǎn)在2009年6月25日這一天在全球的流量

 

 

圖4 《紐約時(shí)報(bào)》Web站點(diǎn)在2009年6月25日這一天在美國(guó)的流量

 

 

圖5 《紐約時(shí)報(bào)》Web站點(diǎn)在2009年6月25日這一天在全球的流量

 

由于不確定應(yīng)該對(duì)24小時(shí)的定時(shí)拍攝進(jìn)行多大程度的收縮,我們決定測(cè)試一下,采用10分鐘。該項(xiàng)目最激動(dòng)人心的時(shí)刻之一是當(dāng)我們首次嘗試渲染24小時(shí)的手機(jī)站點(diǎn)數(shù)據(jù)時(shí),點(diǎn)擊Processing的運(yùn)行(Run)按鈕那一刻。把數(shù)據(jù)在一臺(tái)MacBook Pro機(jī)上渲染成10分鐘的定時(shí)拍攝視頻花了約2個(gè)小時(shí)。結(jié)果生成了!

大家互相擊拳祝賀后,開(kāi)始觀看視頻??戳舜蠹s兩分鐘,我們意識(shí)到視頻時(shí)間太長(zhǎng)了——感覺(jué)視頻太慢了!開(kāi)始重新裝載數(shù)據(jù),創(chuàng)建一個(gè)歷時(shí)接近1.5分鐘的視頻。經(jīng)過(guò)幾次嘗試以及對(duì)代碼和幀速率的調(diào)整,我們生成了新的視頻。對(duì)較小規(guī)模的手機(jī)站點(diǎn)數(shù)據(jù)集進(jìn)行渲染可以正常工作后,我們開(kāi)始在Web站點(diǎn)和手機(jī)站點(diǎn)的混合數(shù)據(jù)集上嘗試。由于數(shù)據(jù)量比之前大得多,渲染花費(fèi)的時(shí)間也長(zhǎng)很多——之前是2個(gè)小時(shí),這次渲染花了24~36個(gè)小時(shí),這取決于其所用的機(jī)器的性能。

半自動(dòng)化

最后,我們希望能夠?qū)φ麄€(gè)過(guò)程實(shí)現(xiàn)自動(dòng)化,這樣程序接收到輸入命令后,可以執(zhí)行任何一天的定時(shí)拍攝渲染。該過(guò)程現(xiàn)在是半自動(dòng)化的,我們可以很容易為同一天渲染多個(gè)定時(shí)拍攝的視頻。舉個(gè)例子,我們可以針對(duì)以下任何一種情況進(jìn)行渲染:

世界地圖的Web站點(diǎn)和手機(jī)站點(diǎn)的數(shù)據(jù)。美國(guó)地圖的Web站點(diǎn)和手機(jī)站點(diǎn)的數(shù)據(jù)。世界地圖和美國(guó)地圖的Web站點(diǎn)的數(shù)據(jù)。世界地圖和美國(guó)地圖的手機(jī)站點(diǎn)數(shù)據(jù)。

每種類(lèi)型的數(shù)據(jù)需要花多長(zhǎng)時(shí)間渲染?這取決于日期以及那一天是否是重大新聞日(即是否有很大流量)。

渲染定時(shí)拍攝視頻的數(shù)據(jù)計(jì)算

在Processing應(yīng)用程序內(nèi),我們每秒鐘捕獲15幀的視頻。對(duì)于每一幀,在屏幕上繪制了1 分鐘的日志量。對(duì)于24小時(shí)的數(shù)據(jù)量,需要捕獲1440分鐘的數(shù)據(jù)。把每15分鐘的數(shù)據(jù)渲染成時(shí)間長(zhǎng)度為一秒的視頻,則1440分鐘的數(shù)據(jù)會(huì)生成96秒鐘的視頻(約1.5分鐘)。

生成的視頻有什么用

在紐約時(shí)報(bào)大廈28層的走廊上掛著10臺(tái)監(jiān)視器,播放著我們所做的一些可視化視頻,包括這些流量圖。其中有6臺(tái)監(jiān)視器自動(dòng)播放本章介紹的定時(shí)拍攝視頻;其他4臺(tái)屏幕上顯示的是《紐約時(shí)報(bào)》Web站點(diǎn)和手機(jī)站點(diǎn)當(dāng)天全部流量的快照(美國(guó)和全球)。我們開(kāi)始在公司內(nèi)分享這些視頻,并且探索更多的可視化來(lái)查看一天內(nèi)可以發(fā)現(xiàn)哪些模式。我們還觀察“重大新聞日”和“平常日”中,用戶(hù)使用模式的差異。

結(jié)束語(yǔ)

我們從目前創(chuàng)建的可視化中觀察到了一些有趣的模式,絕大多數(shù)如圖2~圖5所示。

第一個(gè)模式是手機(jī)站點(diǎn)的流量在美國(guó)約早上5點(diǎn)或6點(diǎn)開(kāi)始暴漲,該時(shí)段人們醒來(lái)開(kāi)始去上班(尤其是在東海岸)。在約8點(diǎn)半或9點(diǎn)人們到達(dá)辦公室前,手機(jī)站點(diǎn)流量一直很大;而當(dāng)人們到達(dá)辦公室時(shí),Web站點(diǎn)流量開(kāi)始第一次大增。Web站點(diǎn)的流量在一整天都很大(尤其是午飯時(shí)間),下午稍有點(diǎn)下降,很可能是人們?cè)谙掳嗦飞希@時(shí)手機(jī)站點(diǎn)的流量又開(kāi)始增加。這個(gè)觀察和我們開(kāi)始研究前的預(yù)期相同,但是該可視化進(jìn)一步證實(shí)了我們的猜想。

 

數(shù)據(jù)可視化之美

另一個(gè)有趣的模式是Web和手機(jī)站點(diǎn)的國(guó)際流量都很大,非洲、中國(guó)、印度和日本某些地區(qū)的手機(jī)站點(diǎn)流量也很大。

標(biāo)簽:杭州網(wǎng)站建設(shè) ‍杭州網(wǎng)站制作 ‍杭州網(wǎng)站設(shè)計(jì) 杭州網(wǎng)站建設(shè)公司 杭州網(wǎng)站制作公司‍ 杭州網(wǎng)站設(shè)計(jì)公司 杭州精品網(wǎng)站建設(shè) 杭州精品網(wǎng)站設(shè)計(jì) 杭州精品網(wǎng)站設(shè)計(jì)公司 杭州精典網(wǎng)站設(shè)計(jì) 杭州精典網(wǎng)站建設(shè) 杭州精典網(wǎng)站設(shè)計(jì)公司 杭州精典網(wǎng)站制作 杭州精品網(wǎng)站制作

最新網(wǎng)站案例

洞悉市場(chǎng)趨勢(shì)演變讓傳播回歸社會(huì)

    免費(fèi)獲取網(wǎng)站建設(shè)與網(wǎng)絡(luò)推廣方案報(bào)價(jià)

    • 關(guān)于我們

      杭州帷拓科技有限公司,是一家新型的全案網(wǎng)絡(luò)開(kāi)發(fā)公司,作為以互聯(lián)網(wǎng)高端網(wǎng)站建設(shè)、APP開(kāi)發(fā)、小程序開(kāi)發(fā)為核心的專(zhuān)業(yè)網(wǎng)絡(luò)技術(shù)服務(wù)供應(yīng)商,帷拓科技致力于全面分析市場(chǎng)環(huán)境、衡量與預(yù)測(cè)市場(chǎng)需求、整合區(qū)別于行業(yè)競(jìng)爭(zhēng)對(duì)手的絕對(duì)優(yōu)勢(shì),結(jié)合品牌理念深度挖掘項(xiàng)目?jī)?yōu)勢(shì)和產(chǎn)品價(jià)值,提升客戶(hù)品牌認(rèn)知、認(rèn)可度。

    • 我們的客戶(hù)

      帷拓科技?xì)v經(jīng)十年沉淀,與國(guó)內(nèi)外上千家客戶(hù)達(dá)成合作關(guān)系,其中穩(wěn)定合作的公司有:浙江華為、浙江移動(dòng)、浙江5G產(chǎn)業(yè)聯(lián)盟、浙江省社科院、綠城足球俱樂(lè)部、娃哈哈雙語(yǔ)學(xué)校、健康中國(guó)杭州峰會(huì)、科雷機(jī)電等,帷拓科技始終堅(jiān)持“帷有專(zhuān)業(yè),才能拓展無(wú)限”的服務(wù)理念,堅(jiān)持“認(rèn)真堅(jiān)持細(xì)節(jié)”的優(yōu)質(zhì)服務(wù)理念,不斷完善自身,成就企業(yè),最終實(shí)現(xiàn)共贏。

    • 我們的業(yè)務(wù)

      帷拓科技主營(yíng)業(yè)務(wù)范圍包含互聯(lián)網(wǎng)高端網(wǎng)站建設(shè)、APP開(kāi)發(fā)、小程序開(kāi)發(fā)、商城網(wǎng)站建設(shè)、公眾號(hào)運(yùn)營(yíng)以及數(shù)字營(yíng)銷(xiāo)等,涵蓋了服務(wù)、房產(chǎn)、數(shù)碼、服裝、物流貿(mào)易等行業(yè),根據(jù)品牌現(xiàn)狀,為每個(gè)客戶(hù)量身定制項(xiàng)目整體服務(wù)方案,以敏銳的市場(chǎng)洞察力、創(chuàng)新的市場(chǎng)策劃能力,全面把握市場(chǎng)變化,為客戶(hù)實(shí)現(xiàn)從企業(yè)到消費(fèi)者的價(jià)值轉(zhuǎn)換。

    Designerpart Designagentur
    Designerpart Designagentur
    Designerpart Designagentur
    Designerpart Designagentur
    Designerpart Designagentur
    Designerpart Designagentur