記錄完整spark.hive.sql處理過(guò)程

需求:

從App啟動(dòng)日志中讀取所需數(shù)據(jù)凄鼻,用來(lái)得到用戶的常用啟動(dòng)時(shí)間點(diǎn),澄狗郑活動(dòng)的地理位置锦庸,并更新到用戶畫(huà)像表中。

背景:

device_id 設(shè)備id
start_time App啟動(dòng)時(shí)間
latitude 上傳緯度
longitude 上傳精度

實(shí)現(xiàn)

原始數(shù)據(jù)

DataFrame數(shù)據(jù)形式是結(jié)構(gòu)化數(shù)據(jù)蒲祈,如下

    device_id                                   start_time                  latitude                longitude

0   ad3bb7b86f9ad9ff4786f767094f31f4835cf167    2017-07-26 00:18:55.985     39.69992988280924       116.5083292779666
1   7e98a8401070c6bcb46a9ef32efd0e6a7066a220    2017-07-26 00:04:37.532     39.82559758010746       116.4472136767569
2   865675021801835                             2017-07-26 00:19:28.821     0.000000                0.000000

通過(guò)
schemeRdd.rdd變成普通rdd

結(jié)構(gòu)變?yōu)?[(device_id,start_time,latitude,longitude),(device_id,start_time,latitude,longitude),...]
1. 經(jīng)緯度處理成geohash6 合并到一起生成的RDD數(shù)據(jù)結(jié)構(gòu)

    rdd.map(lambda x: (x['device_id'], x['start_time'],geohash.encode(x[lat],x[lng]))   

    得到數(shù)據(jù)結(jié)構(gòu)是:
    [('device_id',start_time,geohash6)), (('device_id',start_time,geohash6))]
 
2. 拆分開(kāi)成2個(gè)rdd 甘萧,分別是時(shí)間和GeoHash的,分別處理

    timerdd = rdd.map(lambda x: (x[0],x[1]))
    timerdd_group=timerdd.groupByKey()
    得到數(shù)據(jù)結(jié)構(gòu)
    [('device_id1',['2017-09-01 12:34:00','2017-06-30 01:01:12']),('device_id2',['2017-09-05 11:15:32','2017-07-30 07:01:08'])]

    geohashrdd=rdd.map(lambda x: (x[0],x[2]))
    geohashrdd_group=geohashrdd.groupByKey()
    得到數(shù)據(jù)結(jié)構(gòu)
    [('device_id1',['EXXEQ6','OKWQE9','SDEDD1','SDQGW2']),('device_id2',['LLSJW0','YWQDX7'])]
    2.1 得到用0-24來(lái)表示的常使用的時(shí)間點(diǎn) 梆掸, 得到最近使用時(shí)間到日期  (注意時(shí)間list也許沒(méi)數(shù)據(jù)扬卷,則設(shè)置默認(rèn)時(shí)間)
        result_time_rdd= timerdd_group.mapValues(lambda x: use_time(x))     #該函數(shù)生成一個(gè)元祖 ('often_use_time','last_use_time')

        得到結(jié)構(gòu)為
        [('device_id1',(12,'2017-09-01')),('device_id2',(9,'2017-06-05')),('device_id3',(0,'1970-01-01'))]
    2.2 得到最常去的2個(gè)geohash的值
        result_geohash_rdd = geohashrdd_group.mapValues(lambda x: activie_geohash(x) )

        得到結(jié)構(gòu)為
        [('device_id1',('EWEQ1','SDWQ3'),('device_id2',('UYWIE8','']),('device_id3',['','']]

  1. 根據(jù)結(jié)果數(shù)據(jù)結(jié)構(gòu),組拼更新SQL酸钦,更新數(shù)據(jù)
    結(jié)果2個(gè)rdd

    result_time_rdd    =  [('device_id1',(12,'2017-09-01')),('device_id2',(9,'2017-06-05')),('device_id3',(0,'1970-01-01'))]

    result_geohash_rdd =  [('device_id1',('EWEQ1','SDWQ3'),('device_id2',('UYWIE8','']),('device_id3',['','']]

    通過(guò)cogroup作得到

    [('device_id1',([12,'2017-09-01'],['EWEQ1','SDWQ3']),('device_id2',['UYWIE8','POKE5']),('device_id3',['MVBD5','ZCXV4']]

更新到表中


 UPDATE recommend.user_tag SET open_app_period=x[1],open_app_last=x[2],active_loc_1=x[3],active_loc_2=x[4] WHERE device_id=%s

結(jié)束語(yǔ)

全文使用RDD的API來(lái)實(shí)現(xiàn)怪得,RDD的API十分強(qiáng)大
目前建議使用DataFrame來(lái)實(shí)現(xiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市卑硫,隨后出現(xiàn)的幾起案子徒恋,更是在濱河造成了極大的恐慌,老刑警劉巖欢伏,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件入挣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡硝拧,警方通過(guò)查閱死者的電腦和手機(jī)径筏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)障陶,“玉大人滋恬,你說(shuō)我怎么就攤上這事∠陶猓” “怎么了夷恍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)媳维。 經(jīng)常有香客問(wèn)我酿雪,道長(zhǎng),這世上最難降的妖魔是什么侄刽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任指黎,我火速辦了婚禮,結(jié)果婚禮上州丹,老公的妹妹穿的比我還像新娘醋安。我一直安慰自己杂彭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布吓揪。 她就那樣靜靜地躺著亲怠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柠辞。 梳的紋絲不亂的頭發(fā)上团秽,一...
    開(kāi)封第一講書(shū)人閱讀 51,258評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音叭首,去河邊找鬼习勤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛焙格,可吹牛的內(nèi)容都是我干的图毕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼眷唉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼予颤!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起厢破,我...
    開(kāi)封第一講書(shū)人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤荣瑟,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后摩泪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體笆焰,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年见坑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嚷掠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡荞驴,死狀恐怖不皆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情熊楼,我是刑警寧澤霹娄,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站鲫骗,受9級(jí)特大地震影響犬耻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜执泰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一枕磁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧术吝,春花似錦计济、人聲如沸茸苇。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)学密。三九已至,卻和暖如春凑队,著一層夾襖步出監(jiān)牢的瞬間则果,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工漩氨, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人遗增。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓叫惊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親做修。 傳聞我的和親對(duì)象是個(gè)殘疾皇子霍狰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容