Hive分析統(tǒng)計離線日志信息

關注公眾號:分享電腦學習

回復"百度云盤" 可以免費獲取所有學習文檔的代碼(不定期更新)

云盤目錄說明:

tools目錄是安裝包

res 目錄是每一個課件對應的代碼和資源等

doc 目錄是一些第三方的文檔工具


承接上一篇文檔《新增訪客數(shù)量MR統(tǒng)計之MR數(shù)據(jù)輸出到MySQL

hive-1.2.1的版本可以直接映射HBase已經存在的表

如果說想在hive創(chuàng)建表,同時HBase不存在對應的表,也想做映射色建,那么采用編譯后的hive版本hive-1.2.1-hbase


1. Hive中創(chuàng)建外部表跌穗,關聯(lián)hbase

CREATEEXTERNALTABLEevent_log_20180728(

keystring,

plstring,

verstring,

s_timestring,

u_udstring,

u_sdstring,

enstring)

STOREDBY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

WITHSERDEPROPERTIES ("hbase.columns.mapping"=":key,info:pl,info:ver,info:s_time,info:u_ud,info:u_sd,info:en")

TBLPROPERTIES("hbase.table.name"="event_log_20180728");


統(tǒng)計多少個新用戶:

selectcount(*)fromevent_log_20180728whereen="e_l";



2. 提取數(shù)據(jù)区转,進行初步的數(shù)據(jù)過濾操作姆泻,最終將數(shù)據(jù)保存到臨時表


創(chuàng)建臨時表

CREATETABLEstats_hourly_tmp01(

plstring,

verstring,

s_timestring,

u_udstring,

u_sdstring,

enstring,

`date`string,

hourint

);



將原始數(shù)據(jù)提取到臨時表中

INSERTOVERWRITETABLEstats_hourly_tmp01

SELECT pl,ver,s_time,u_ud,u_sd,en,

from_unixtime(cast(s_time/1000asint),'yyyy-MM-dd'),hour(from_unixtime(cast(s_time/1000asint),'yyyy-MM-dd HH:mm:ss'))

FROMevent_log_20200510

WHERE en="e_l"oren="e_pv";



SELECTfrom_unixtime(cast(s_time/1000asint),'yyyy-MM-dd'),from_unixtime(cast(s_time/1000asint),'yyyy-MM-dd HH:mm:ss')FROMevent_log_20180728;


查看結果



3. 具體kpi的分析

創(chuàng)建臨時表保存數(shù)據(jù)結果

CREATETABLEstats_hourly_tmp02(

plstring,

verstring,

`date`string,

kpistring,

hourint,

valueint

);


統(tǒng)計活躍用戶 u_ud 有多少就有多少用戶

統(tǒng)計platform維度是:(name,version)

INSERTOVERWRITETABLEstats_hourly_tmp02

SELECT pl,ver,`date`,'hourly_new_install_users'askpi,hour,COUNT(distinctu_ud)asv

FROM stats_hourly_tmp01

WHERE en="e_l"

GROUPBYpl,ver,`date`,hour;


查看結果:


統(tǒng)計會話長度指標

會話長度 = 一個會話中最后一條記錄的時間 - 第一條的記錄時間 = maxtime - mintime

步驟:

1. 計算出每個會話的會話長度 group by u_sd

2. 統(tǒng)計每個區(qū)間段的總會話長度


統(tǒng)計platform維度是:(name,version)

INSERTINTOTABLE

SELECT pl,ver,`date`,'hourly_session_length'askpi,hour,sum(s_length)/1000asv

FROM (

SELECTpl,ver,`date`,hour,u_sd,(max(s_time) -min(s_time))ass_length

FROM stats_hourly_tmp01

GROUPBYpl,ver,`date`,hour,u_sd

) tmp

GROUPBYpl,ver,`date`,hour;


查看結果



將tmp02的數(shù)據(jù)轉換為和mysql表結構一致的數(shù)據(jù)

窄表轉寬表 => 轉換的結果保存到臨時表中

CREATETABLEstats_hourly_tmp03(

plstring, verstring,`date`string, kpistring,

hour00int, hour01int, hour02int, hour03int,

hour04int, hour05int, hour06int, hour07int,

hour08int, hour09int, hour10int, hour11int,

hour12int, hour13int, hour14int, hour15int,

hour16int, hour17int, hour18int, hour19int,

hour20int, hour21int, hour22int, hour23int

);


INSERTOVERWRITETABLEstats_hourly_tmp03

SELECT pl,ver,`date`,kpi,

max(casewhenhour=0thenvalueelse0end)ash0,

max(casewhenhour=1thenvalueelse0end)ash1,

max(casewhenhour=2thenvalueelse0end)ash2,

max(casewhenhour=3thenvalueelse0end)ash3,

max(casewhenhour=4thenvalueelse0end)ash4,

max(casewhenhour=5thenvalueelse0end)ash5,

max(casewhenhour=6thenvalueelse0end)ash6,

max(casewhenhour=7thenvalueelse0end)ash7,

max(casewhenhour=8thenvalueelse0end)ash8,

max(casewhenhour=9thenvalueelse0end)ash9,

max(casewhenhour=10thenvalueelse0end)ash10,

max(casewhenhour=11thenvalueelse0end)ash11,

max(casewhenhour=12thenvalueelse0end)ash12,

max(casewhenhour=13thenvalueelse0end)ash13,

max(casewhenhour=14thenvalueelse0end)ash14,

max(casewhenhour=15thenvalueelse0end)ash15,

max(casewhenhour=16thenvalueelse0end)ash16,

max(casewhenhour=17thenvalueelse0end)ash17,

max(casewhenhour=18thenvalueelse0end)ash18,

max(casewhenhour=19thenvalueelse0end)ash19,

max(casewhenhour=20thenvalueelse0end)ash20,

max(casewhenhour=21thenvalueelse0end)ash21,

max(casewhenhour=22thenvalueelse0end)ash22,

max(casewhenhour=23thenvalueelse0end)ash23

FROM stats_hourly_tmp02

GROUPBYpl,ver,`date`,kpi;


selecthour14,hour15,hour16fromstats_hourly_tmp03;

結果:



將維度的屬性值轉換為id,使用UDF進行轉換

1. 將udf文件夾中的所有自定義HIVE的UDF放到項目中

2. 使用run maven install環(huán)境進行打包

3. 將打包形成的jar文件上傳到HDFS上的/jar文件夾中

4. hive中創(chuàng)建自定義函數(shù)蜜托,命令如下:


createfunctiondateconverteras'com.xlgl.wzy.hive.udf.DateDimensionConverterUDF'usingjar'hdfs://master:9000/jar/transformer-0.0.1.jar';



createfunctionkpiconverteras'com.xlgl.wzy.hive.udf.KpiDimensionConverterUDF'usingjar'hdfs://master:9000/jar/transformer-0.0.1.jar';


createfunctionplatformconverteras'com.xlgl.wzy.hive.udf.PlatformDimensionConverterUDF'usingjar'hdfs://master:9000/jar/transformer-0.0.1.jar';



創(chuàng)建hive中對應mysql的最終表結構

CREATETABLEstats_hourly(

platform_dimension_idint,

date_dimension_idint,

kpi_dimension_idint,

hour00int, hour01int, hour02int, hour03int,

hour04int, hour05int, hour06int, hour07int,

hour08int, hour09int, hour10int, hour11int,

hour12int, hour13int, hour14int, hour15int,

hour16int, hour17int, hour18int, hour19int,

hour20int, hour21int, hour22int, hour23int

);


INSERTOVERWRITETABLEstats_hourly

SELECT

platformconverter(pl,ver),dateconverter(`date`,'day'),kpiconverter(kpi),

hour00,hour01,hour02,hour03,

hour04,hour05,hour06,hour07,

hour08,hour09,hour10,hour11,

hour12,hour13,hour14,hour15,

hour16,hour17,hour18,hour19,

hour20,hour21,hour22,hour23

FROMstats_hourly_tmp03;



導出sqoop-》mysql

bin/sqoop export \

--connect jdbc:mysql://master:3306/test \

--username root \

--password123456\

--table stats_hourly \

--export-dir/user/hive/warehouse/log_lx.db/stats_hourly \

-m1\

--input-fields-terminated-by'\001'


查詢mysql

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末禾酱,一起剝皮案震驚了整個濱河市微酬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌颤陶,老刑警劉巖颗管,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滓走,居然都是意外死亡垦江,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門搅方,熙熙樓的掌柜王于貴愁眉苦臉地迎上來比吭,“玉大人,你說我怎么就攤上這事姨涡●锰伲” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵绣溜,是天一觀的道長慷彤。 經常有香客問我,道長怖喻,這世上最難降的妖魔是什么底哗? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮锚沸,結果婚禮上跋选,老公的妹妹穿的比我還像新娘暴心。我一直安慰自己识颊,他們只是感情好,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布卑笨。 她就那樣靜靜地躺著距潘,像睡著了一般炼列。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上音比,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天俭尖,我揣著相機與錄音,去河邊找鬼洞翩。 笑死稽犁,一個胖子當著我的面吹牛,可吹牛的內容都是我干的骚亿。 我是一名探鬼主播已亥,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼来屠!你這毒婦竟也來了虑椎?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤俱笛,失蹤者是張志新(化名)和其女友劉穎绣檬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嫂粟,經...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡娇未,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了星虹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片零抬。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宽涌,靈堂內的尸體忽然破棺而出平夜,到底是詐尸還是另有隱情,我是刑警寧澤卸亮,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布忽妒,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏段直。R本人自食惡果不足惜吃溅,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸯檬。 院中可真熱鬧决侈,春花似錦、人聲如沸喧务。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽功茴。三九已至庐冯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坎穿,已是汗流浹背展父。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赁酝,地道東北人犯祠。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像酌呆,于是被迫代替她去往敵國和親衡载。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355