亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

跟天齊老師學Spark(8)--Spark RDD綜合練習

2019-11-11 04:25:08
字體:
來源:轉載
供稿:網友
綜合練習:通過基站信息計算家庭地址和工作地址需求:根據手機信號來計算其所在的位置手機一開機,就會和附近的基站建立連接,建立連接和斷開連接都會被記錄到服務器上的日志,所以即使沒手機有開啟網絡或者GPS,也可以定位手機所在的位置。基站都有一定的輻射范圍,并且根據信號強度有不同的信號級別,比如2G、3G和4G信號。我們雖然不知道手機用戶所在的具體位置,但是我們知道基站的位置,手機用戶一旦進入基站的輻射范圍,手機就會和基站之間建立連接。我們就可以計算用戶大致的位置。我們就可以根據這些位置信息做一些推薦廣告。比如附近的商家,你可能喜歡的商品或者服務。假如現在我們得到了一些位置數據,比如有手機號、建立連接的標記(比如1)、斷開連接的標記(比如0)、建立連接的時間戳、斷開連接的時間戳等字段。用斷開連接的時間減去建立連接的時間就是用戶在該基站下停留的時間。但是這種計算方式不是很好,因為在實際中用戶可能會停留好幾天的情況,或者說有建立連接但是沒有斷開連接的情況。所以這里面其實還會有一個會話的概念。其實基站不是一直保持連接的,它可能每隔一段時間他會自動斷開一次。比如每隔一天就斷開一次。每個基站都有一個基站ID,這是一個UUID。所以可能還會一個和基站相關的基站表,比如基站的id和經緯度等信息。我們應該將兩個表進行join才能得到用戶在基站下停留的時間等信息。這里我們先不考慮會話id的概念。我們這里只是求某個用戶白天和晚上等某個時間段停留時間的從高到低進行排序。比如早晨8點到晚上6點之間停留時間最長的我們可以認為是用戶的工作地點。相反,在晚上6點到第二天早上8點這段時間中停留時間最長的我們就認為是用戶的住所。知道了用戶的工作地點和住處,我們就可以做一些推薦了。但是還有一個問題是,一個用戶可能在一天中會經過幾十甚至上百個基站。我們怎么才能知道它在哪個基站下面停留的時間最長呢?而且還有一個問題,一個用戶在同一個基站下路過還不止一次。比如某用戶,在他公司和家之間有一個基站,他早上上班時路過某基站一次,中午回家又路過一次,晚上下班又路過一次。這樣,他就會在同一個基站中路過很多次。這樣在基站的服務器日志中就會記錄很多條數據。我們現在要計算用戶在哪個基站下停留時間最長,其實就是簡單的數據切分,然后進行求和,然后進行join。為了便于理解,我們模擬了一些簡單的日志數據,共4個字段:手機號碼,時間戳,基站id,連接類型(1表示建立連接,0表示斷開連接):基站A:
    18688888888,20160327082400,16030401EAFB68F1E3CDF819735E1C66,1    18611132889,20160327082500,16030401EAFB68F1E3CDF819735E1C66,1    18688888888,20160327170000,16030401EAFB68F1E3CDF819735E1C66,0    18611132889,20160327180000,16030401EAFB68F1E3CDF819735E1C66,0基站B:
    18611132889,20160327075000,9F36407EAD0629FC166F14DDE7970F68,1    18688888888,20160327075100,9F36407EAD0629FC166F14DDE7970F68,1    18611132889,20160327081000,9F36407EAD0629FC166F14DDE7970F68,0    18688888888,20160327081300,9F36407EAD0629FC166F14DDE7970F68,0    18688888888,20160327175000,9F36407EAD0629FC166F14DDE7970F68,1    18611132889,20160327182000,9F36407EAD0629FC166F14DDE7970F68,1    18688888888,20160327220000,9F36407EAD0629FC166F14DDE7970F68,0    18611132889,20160327230000,9F36407EAD0629FC166F14DDE7970F68,0基站C:
    18611132889,20160327081100,CC0710CC94ECC657A8561DE549D940E0,1    18688888888,20160327081200,CC0710CC94ECC657A8561DE549D940E0,1    18688888888,20160327081900,CC0710CC94ECC657A8561DE549D940E0,0    18611132889,20160327082000,CC0710CC94ECC657A8561DE549D940E0,0    18688888888,20160327171000,CC0710CC94ECC657A8561DE549D940E0,1    18688888888,20160327171600,CC0710CC94ECC657A8561DE549D940E0,0    18611132889,20160327180500,CC0710CC94ECC657A8561DE549D940E0,1    18611132889,20160327181500,CC0710CC94ECC657A8561DE549D940E0,0    下面是基站表的數據,共4個字段,分別代表基站id和經緯度以及信號的輻射類型(比如2G信號、3G信號和4G信號):
    9F36407EAD0629FC166F14DDE7970F68,116.304864,40.050645,6    CC0710CC94ECC657A8561DE549D940E0,116.303955,40.041935,6    16030401EAFB68F1E3CDF819735E1C66,116.296302,40.032296,6    基于以上3個基站的日志數據,要求計算某個手機號碼在一天之內出現最多的兩個地點。因為一個手機號碼可能一天當中可能會經過很多的基站,可能他在家停留了10個小時,在公司停留了8個小時,還有可能坐車的時候路過了一些基站。思路:    求每個手機號碼在哪些基站下面停留的時間最長,在計算的時候,用"手機號碼+基站"才能定位在哪個基站下面停留的時間,    因為每個基站下面會有很多的用戶的日志數據。全國有很多的基站,每個電信分公司只負責計算自己的數據。數據存放在基站下面的機房的服務器上。一般是用過一些工具通過網絡把這些數據搜集過來。搜集過來的數據量可能會很大,這些數據一般會存放到分布式的文件系統中,比如存放到HDFS中。我們可能會基于一周或者一個月的數據量來計算,時間跨度越大,計算出來的結構就越精確。相關資料在"Spark資料"中。重要:寫好的spark程序,如果我不想每次都提交到spark集群上面運行,可以在程序中指定"在本地運行模式",也就是如下方式:new SparkConf().setAppName("xxxx").setMaster("local")它表示要在本地模擬一個程序來運行,它并沒有把它提交到集群。但是,這種方式在linux和Mac系統中沒有問題,而在Windows下會有異常。因為我們的spark程序要從hdfs中讀數據,所以它要用到hadoop的InputFormat來讀數據,如果要在windows下面進行本地調試,需要做一些事情。我們知道hadoop要壓縮和解壓縮,那么壓縮和解壓縮所需要的都是一些c或c++編寫的庫,而這些c或c++編寫的庫文件是不跨平臺的。所以要在windows下面調試就必須先把這些庫安裝好。我們建議在linux下面進行調試,如果你沒有Mac系統的話,可以在linux虛擬機上安裝一個idea開發工具?使用Linux的圖形界面來調試。下面是完整的代碼:
import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object MobileLocation {  def main(args: Array[String]) {    val conf = new SparkConf().setAppName("MobileLocation").setMaster("local[2]")    val sc = new SparkContext(conf)    val lines: RDD[String] = sc.textFile(args(0))    //切分    //lines.map(_.split(",")).map(arr => (arr(0), arr(1).toLong, arr(2), args(3)))    val splited = lines.map(line => {      val fields = line.split(",")      val mobile = fields(0)      val lac = fields(2)      val tp = fields(3)      val time = if(tp == "1") -fields(1).toLong else fields(1).toLong      //拼接數據      ((mobile, lac), time)    })    //分組聚合    val reduced : RDD[((String, String), Long)] = splited.reduceByKey(_+_)    val lmt = reduced.map(x => {      //(基站,(手機號, 時間))      (x._1._2, (x._1._1, x._2))    })    //連接    val lacInfo: RDD[String] = sc.textFile(args(1))    //整理基站數據    val splitedLacInfo = lacInfo.map(line => {      val fields = line.split(",")      val id = fields(0)      val x = fields(1)      val y = fields(2)      (id, (x, y))    })    //連接jion    val joined: RDD[(String, ((String, Long), (String, String)))] = lmt.join(splitedLacInfo)    PRintln(joined.collect().toBuffer)    sc.stop()  }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性感美女h网站在线观看免费| 久久精品电影一区二区| 精品亚洲一区二区三区在线观看| 日本乱人伦a精品| 国产精品视频自拍| 久久久久亚洲精品国产| 一本一本久久a久久精品综合小说| 亚洲欧美国产高清va在线播| 大胆欧美人体视频| 国产精品网址在线| 欧美成人一区二区三区电影| 成人信息集中地欧美| 国产主播精品在线| 亚洲区中文字幕| 国产精品久久久久久久av大片| 中文字幕成人在线| 91av视频在线播放| 亚洲天堂男人天堂| 国产在线精品成人一区二区三区| 亚洲成色777777在线观看影院| 亚洲综合在线小说| 最新国产精品拍自在线播放| 欧美日韩在线视频一区| 91久久久亚洲精品| 国产精品69久久久久| 日韩精品视频免费在线观看| 中国人与牲禽动交精品| 国产精品日韩欧美| 91地址最新发布| 亚洲精品日产aⅴ| 国模视频一区二区三区| 亚洲黄色av女优在线观看| 亚洲成人久久一区| 91视频8mav| 日韩欧美成人网| 欧美孕妇毛茸茸xxxx| 国产成人aa精品一区在线播放| 国产精品xxx视频| 亚洲国产成人91精品| 国产精品偷伦免费视频观看的| 亚洲欧洲在线免费| 欧美日韩国产精品一区二区三区四区| 国产一区二区三区丝袜| 在线精品视频视频中文字幕| 亚洲国产精品推荐| 日韩免费av在线| 中文在线资源观看视频网站免费不卡| 欧美日本亚洲视频| 日韩电影免费观看在线观看| 欧日韩在线观看| 在线播放日韩av| 91中文字幕在线观看| 欧美一区二区三区精品电影| 亚洲性夜色噜噜噜7777| 欧美伊久线香蕉线新在线| 热久久免费国产视频| 亚洲精品影视在线观看| 日韩欧美亚洲一二三区| 日韩亚洲综合在线| 国产成人中文字幕| 国产女人18毛片水18精品| 日韩成人久久久| 国产亚洲人成网站在线观看| 国产婷婷97碰碰久久人人蜜臀| 亚洲品质视频自拍网| 97精品国产aⅴ7777| 久久久久成人网| 日韩免费视频在线观看| 青青草99啪国产免费| 高清欧美一区二区三区| 亚洲精品免费一区二区三区| 欲色天天网综合久久| 成人a免费视频| 国产成人精品免高潮费视频| 中文字幕久久精品| 久久久久国产视频| 欧美高清不卡在线| 日韩精品在线第一页| 久久久91精品国产一区不卡| 国产做受69高潮| 精品久久久久久亚洲精品| 国产一区二中文字幕在线看| 日韩经典中文字幕在线观看| 亚洲男人天堂2024| 91高清免费视频| 亚洲欧美国产一区二区三区| 亚洲xxx大片| 亚洲美女性生活视频| 欧美不卡视频一区发布| 97视频在线观看成人| 久久av红桃一区二区小说| 精品国内自产拍在线观看| 中文字幕免费精品一区高清| 91久久精品国产| 亚洲国产精品电影在线观看| 欧美高清在线视频观看不卡| www.欧美视频| 欧美激情视频给我| 高清亚洲成在人网站天堂| 亚洲天堂第二页| 亚洲成人网久久久| 亚洲乱码一区av黑人高潮| 中文字幕视频在线免费欧美日韩综合在线看| 国产欧美中文字幕| 日韩欧美精品免费在线| 在线成人激情黄色| 国内精品久久久久久久| 日韩视频免费在线观看| 国产视频在线观看一区二区| 欧美激情中文字幕在线| 中文字幕精品久久久久| 亚洲欧洲日产国码av系列天堂| 91在线观看免费观看| 欧美中文字幕在线观看| 亚洲视频国产视频| 亚洲日本成人女熟在线观看| 亚洲电影免费在线观看| 国内自拍欧美激情| 久久夜色撩人精品| 日本最新高清不卡中文字幕| 91中文字幕在线观看| 色噜噜狠狠色综合网图区| 日韩精品极品在线观看播放免费视频| 欧洲亚洲免费在线| 日韩国产精品视频| 国产成人精品久久亚洲高清不卡| 久久国产精品久久久| 亚洲自拍偷拍第一页| 国产精品成人在线| 国模极品一区二区三区| 国产精品亚洲аv天堂网| 久久久久久久999精品视频| 久久亚洲一区二区三区四区五区高| 久久亚洲精品小早川怜子66| 日韩毛片中文字幕| 欧美一级黄色网| 久久九九全国免费精品观看| 日韩欧美亚洲范冰冰与中字| 久久久精品久久久久| 久久男人av资源网站| 夜夜嗨av一区二区三区四区| 日韩高清电影免费观看完整| 久久精品国产亚洲精品2020| 亚洲va久久久噜噜噜久久天堂| 亚洲一区亚洲二区| 国产精品手机播放| 国产精品久久久久久婷婷天堂| 国产精品久久久久久久久久小说| 久久久久久亚洲精品不卡| 亚洲精品免费网站| 欧美亚洲国产日韩2020| 国产69精品久久久久99| 国产精品中文字幕久久久| 国产精品三级久久久久久电影| 国产精品美女av| 亚洲美女激情视频| 欧美精品免费在线观看| 91久久中文字幕| 国产成人精品网站| 中文字幕久久久| 91免费看视频.| 国产精品你懂得| 国产精品久久久久久久一区探花| 国产一区二区三区在线视频|