版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
模塊七大數(shù)據(jù)日志分析綜合項(xiàng)目案例
7.1項(xiàng)目目的
當(dāng)今時(shí)代,數(shù)據(jù)與我們息息相關(guān),我們每天都會(huì)接觸到各種軟件、瀏覽各種
網(wǎng)站,在生活上,也不僅僅是接觸信息,其實(shí)也是在生產(chǎn)很多信息,留下很多的
數(shù)據(jù),只是人們可能沒(méi)有察覺(jué)而已。本模塊將會(huì)總結(jié)前面模塊所學(xué)習(xí)的大部分組
件,設(shè)計(jì)成了綜合項(xiàng)目案例,讓大家對(duì)大數(shù)據(jù)的認(rèn)識(shí)提到一個(gè)新的高度,并且熟
悉生產(chǎn)上的開(kāi)發(fā)流程。
7.2項(xiàng)目意義
本項(xiàng)目案例的日志指的是用戶行為日志,用戶行為日志可以類比于網(wǎng)站或者
app的眼睛,開(kāi)發(fā)人員可以從中了解到用戶的主要來(lái)源、喜歡的內(nèi)容、用戶的訪
問(wèn)設(shè)備等等。也可以將此比喻為網(wǎng)站或者app的神經(jīng),通過(guò)用戶行為口志的分析,
可以清楚網(wǎng)站或者app的優(yōu)缺點(diǎn),了解用戶使用過(guò)程中遇到的各種問(wèn)題以及反饋,
進(jìn)而有利于優(yōu)化自己的網(wǎng)站或者app,提升用戶的體驗(yàn)。此外,通過(guò)FI志分析,
還可以通過(guò)用戶的行為日志,挖掘出有價(jià)值的信息,將信息進(jìn)行歸類,劃分主要
的傾向人群,有利于實(shí)現(xiàn)業(yè)務(wù)需求。
7.3項(xiàng)目背景
此處用戶每次訪問(wèn)網(wǎng)站或者app時(shí),都會(huì)留下很多的行為數(shù)據(jù),這些行為包
括訪問(wèn)、瀏覽、搜索、點(diǎn)擊等等。每一個(gè)行為動(dòng)作所產(chǎn)生的數(shù)據(jù)都可以被后臺(tái)采
集到。比如說(shuō)點(diǎn)擊的URL、從哪個(gè)URL跳轉(zhuǎn)過(guò)來(lái)的(referer)>頁(yè)面上的停留時(shí)
間等等。當(dāng)有了數(shù)據(jù)之后,就可以進(jìn)行大數(shù)據(jù)的分析統(tǒng)計(jì)等等工作了。
7.4項(xiàng)目架構(gòu)
先來(lái)了解一下本次項(xiàng)目的架構(gòu),再來(lái)總結(jié)數(shù)據(jù)處理的流程,如圖7-1所示。
|依[(=>
Webserver
app
日志閣空:/home/access.log
圖7-1項(xiàng)目架構(gòu)流程圖
當(dāng)訪問(wèn)網(wǎng)站或者使用app的時(shí)候,都會(huì)產(chǎn)生許多日志信息,存放到日志服務(wù)
器里面??蚣軋D中Webserver指的是網(wǎng)站或者叩p的后臺(tái),而本實(shí)訓(xùn)將日志信息
直接存放到服務(wù)器的/home/access.log路徑下,然后通過(guò)Flume對(duì)采集到的信息
進(jìn)行路由,此處路由分兩條主線,--條是直接將數(shù)據(jù)采集到HDFS,讓MapReduce
對(duì)HDFS上的數(shù)據(jù)進(jìn)行清洗或者離線分析,分析完后再將結(jié)果存放到傳統(tǒng)數(shù)據(jù)庫(kù)
中,此處是使用MySQL。Flume路由的另一條主線是與Kafka整合,將消費(fèi)的數(shù)
據(jù)存儲(chǔ)到由HBase中,當(dāng)然此處的Kafka也可以與SparkStreamingsStorm>Flink
等組件整合,實(shí)現(xiàn)實(shí)時(shí)流處理主線。Kafka與HBase整合完后,HBase可以與傳
統(tǒng)的業(yè)務(wù)系統(tǒng)整合,也可以與其他組件整合,如圖7-1中將HBase與Hive進(jìn)行
整合,目的是實(shí)現(xiàn)通過(guò)類SQL對(duì)HBase中的數(shù)據(jù)進(jìn)行高效的分析。最后,這兩條
主線可以與ECharts整合,對(duì)數(shù)據(jù)進(jìn)行可視化。
1.數(shù)據(jù)處理流程
綜上所述,可以將數(shù)據(jù)處理流程歸結(jié)為五大步驟:數(shù)據(jù)采集->數(shù)據(jù)清洗->
數(shù)據(jù)分析->數(shù)據(jù)入庫(kù)->數(shù)據(jù)可視化
1)數(shù)據(jù)采集
可以使用Flume對(duì)數(shù)據(jù)進(jìn)行采集,將web日志寫(xiě)入到HDFS、Kafka或者HBase
等等中。
2)數(shù)據(jù)清洗
可以使用MapReduce、Spark、Hive、Flink或者其他的一些分布式計(jì)算框架,
對(duì)數(shù)據(jù)進(jìn)行清洗,先過(guò)濾掉沒(méi)有意義的數(shù)據(jù),如臟數(shù)據(jù)或者與業(yè)務(wù)不相關(guān)的數(shù)據(jù)
等等,清洗完之后的數(shù)據(jù)可以存放在HDFS或者Hive、SparkSQL等等中。
3)數(shù)據(jù)處理
按照需求對(duì)相應(yīng)業(yè)務(wù)進(jìn)行統(tǒng)計(jì)和分析,可以使用數(shù)據(jù)清洗時(shí)的計(jì)算框架。
4)數(shù)據(jù)處理結(jié)果入庫(kù)
處理的結(jié)果可以存放到RDBMS、NoSQL等數(shù)據(jù)庫(kù)中。
5)數(shù)據(jù)可視化
當(dāng)數(shù)據(jù)入庫(kù)之后,可以開(kāi)發(fā)各種各樣的圖形億界面對(duì)分析結(jié)果進(jìn)行展示,比
如說(shuō)餅圖、柱狀圖、地圖、折線圖等等,可以借助的工具有ECharts、DataV.HUE、
Zeppelin>Kibana等。
7.5項(xiàng)目需求
當(dāng)獲取到了數(shù)據(jù),可以從中挖掘出一些價(jià)值,想要挖掘什么價(jià)值,取決于業(yè)
務(wù)能力水平,而能否實(shí)現(xiàn),則取決于技術(shù)本身的能力以及所擁有的數(shù)據(jù)維度有多
廣有多完善,而實(shí)現(xiàn)的難度則與數(shù)據(jù)的質(zhì)量息息相關(guān)。本次項(xiàng)目的數(shù)據(jù)采用模擬
的方式生成,自定義的數(shù)據(jù)有ip、時(shí)間、訪問(wèn)的URL、跳轉(zhuǎn)過(guò)來(lái)的網(wǎng)址、狀態(tài)碼。
主要有5個(gè)字段,當(dāng)然,此數(shù)據(jù)可以自行修改自行生成,也可以拿真實(shí)的數(shù)據(jù)來(lái)
操作?;跀?shù)據(jù),可以實(shí)現(xiàn)的業(yè)務(wù)場(chǎng)景有非常多,自己可以嘗試去多挖掘。比如
說(shuō),統(tǒng)計(jì)哪三個(gè)省份的用戶訪問(wèn)網(wǎng)站最頻繁?統(tǒng)計(jì)訪問(wèn)網(wǎng)站最頻繁的時(shí)間段是哪
個(gè)?統(tǒng)計(jì)過(guò)去10個(gè)小時(shí)內(nèi),用戶的訪問(wèn)量有多少?還有很多,都可以實(shí)現(xiàn)。
為了更好地與前面模塊的內(nèi)容銜接,也為了降低學(xué)習(xí)的難度,本次項(xiàng)FU勺業(yè)
務(wù)需求是統(tǒng)計(jì)每天的用戶訪問(wèn)量。
7.6業(yè)務(wù)實(shí)現(xiàn)
1.準(zhǔn)備工作
需要準(zhǔn)備好開(kāi)發(fā)工具和所需要的軟件的安裝包,前面的實(shí)訓(xùn)己經(jīng)準(zhǔn)備好了。
所以此處不再做過(guò)多說(shuō)明。
在實(shí)操的時(shí)候,應(yīng)確保各軟件的版本與本書(shū)一致,不一致也應(yīng)該確保大扳本
保持一致;如不相同,遇到問(wèn)題,請(qǐng)先自行搜索與自己版本相關(guān)的解決方案。
2.效果提前預(yù)覽
項(xiàng)目的最終效果如圖7-2所示。
統(tǒng)計(jì)每天用戶的訪問(wèn)量,雙
2022111120221113202211102022111420221112
圖7-2項(xiàng)目展示效果圖
說(shuō)明:具體的次數(shù)每個(gè)人會(huì)不相同。
3.實(shí)現(xiàn)步驟
接下來(lái)將一步一步來(lái)實(shí)現(xiàn),主要分為以下七大步驟:
步驟一、模擬日志生產(chǎn)
步驟二、編寫(xiě)Flume配置文件
步驟三、Flume整合Kafka
步驟四、Flume與HDFS、Kafka整合
步驟五、Kafka與HBase整合
步驟六、MapReduce分析HDFS上的數(shù)據(jù)并寫(xiě)入到MySQL
步驟七、ECharts與MySQL整合實(shí)現(xiàn)數(shù)據(jù)可視化
1)模擬日志生產(chǎn)
①新建一個(gè)名稱為logstat的項(xiàng)目,關(guān)鍵設(shè)置選項(xiàng)如圖7-3所示。
因NewProject
Name:logstat
EmptyProject
Location:-\ldeaProjects
Projectwillbecreatedin:-\ldeaPrqjects\logstat
Generators
tYlMavenArchetypeCreateGitrepository
vJavaFX
Language:JavaKotlinGroovyHTML+
KKotlinMultiplatform
◎ComposeMultiplatformBuildsystem:inrellUMavenGradle
(JFIDEPlugin
JDK:曰11OracleOpenJDKversion11.0.6▼I
MAndroid
Addsamplecode
vAdvancedSettings
Groupld:com.bigdata.hadoop
Artifactld:logstat
圖7-3新建項(xiàng)目
項(xiàng)目新建好后,界面如圖7-4所示。
3E*eidrtViewN.如teCodefiefactoc|tuidRunlookVCS宣MowHdp
109ftMnlpom.xml*▼\CurrentFie▼
<?x?lverslon-"1.0*tncodlne-,UTF-8"?>
〈projectxatns=ahttp://aavon.apache.org/PI
xatns:i5i="http://vaw.vS?org/2。。
xsl:sch?Mlocation'http://Mv?n
<?o(]?IYerslon>4.e.e</BodelVerslon>
■rewurcc
>Hte$t
vgroupldxo,.blgdsta.hado&p</groupld>
tnpom.nml
>*txtenwlUbrariei<artlf?ctld>lo5)5tat</artifactld>
IScritche5andComolef<v?rsion>1.9-SKAPSH0T</Yer5ion>
<prop0rtl?s>
<??v?n.co?pi.5^urc?>ll</a?ven.COB^Ii?r.sovrct>
<a?v?n.compiler?targ0t.coFl?廣.tar9?t>
<proj?ct.buil.d.s(xirceEncodin9>UTF*8</projtct.build.sourceEncodin9>
</prop?rtles>
</pro1?ct>
1HBM111HHi1111HB11aHi111HBM1HHl11H1HHl1111H1aBMprojectMti<aclld
VVmiocCorM■TOOOV■T?r*wwiOSOTMCM、BuM9D^nAmcm
Xmnk?dprebuittthdredindexesRetlxetheindexhqbmeandCPUlo^dwithprebuiltJDKihoredindexes//AUay%dowik?d//Dowrkadonce//(4AQ837IfUT?4spec%
圖7-4界面總覽
接著,在java目錄里面新建包c(diǎn)om.bigdata.hadoop.generate
操作如圖7-5、圖7-6所示。
圖7-5新建Package
NewPackage
com.bigdata.hadoop.generate
圖7-6給新建包命名
新建GenerateLog類,里面編寫(xiě)模擬日志生成的主程序。操作過(guò)程如圖7-7、
圖7-8所示。
Bijava
<modelVersion>4.8.6</modelVersion>
Elcom.bigdata.hadoop.generate^i
New>QJavaClass
圖7-7新建Class
NewJavaClass
QGenerateLog|
QClass
OInterface
OEnum
Annotation
圖7-8給新建類命名
②編寫(xiě)代碼
packagecom.bigdata.hadaop.generate;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.text.DateFormat;
importjava.text.SimpleDateFormat;
importjava.utiLCalendar:
importjava.util.Date;
importjava.util.Random;
importjava.util.concurrent.TimeUnit;
publicclassGenerateLog{
//一、數(shù)據(jù)定義
//I、url地址
publicstaticString[]urlPaths={
"article/l02.html",
"article/103.html';
"article/104.html",
"article/105.
"article/106.html",
"article/107.html",
"article/l()8.htmr;
"article/109.html",
,'video/322,\
"tag/listn
〃2、ip數(shù)字
publicstaticSlring[]ipSplices=("102'\"71",0145","33","67'\"54","164","121");
〃3、http網(wǎng)址
publicstaticString1]httpRcfcrcrs={
"/s?wd=%s",
"hltps://w\/web?quer),=%s'\
"/search?q=%s",
"hups:〃/search?p=%s"
);
〃4、搜索關(guān)鍵字
publicstaticString1]searchKeyword={
”復(fù)制粘貼玩大數(shù)據(jù)”,
”網(wǎng)站用戶行為分析”,
"Elasdcsearch的安裝”,
"Kallca的安裝及發(fā)布訂閱消息系統(tǒng)”,
"window?系統(tǒng)上Centos7的安裝",
”學(xué)習(xí)大數(shù)據(jù)常用Linux命令”,
"Docker搭建Spark集群"
};
//5、狀態(tài)碼
publicstaticString[]statusCodes={"200","404,\"500"};
//二、隨機(jī)生成數(shù)據(jù)
//I、隨機(jī)生成ip
publicstaticStringsamplelpO{
intipNum;
Stringip=
for(inti=0;i<4;i++){
ipNum=newRandom().nextInt(ipSplices.length);
ip+=+ipSplices[ipNum];
)
returnip.substrng(l);
)
〃2、隨機(jī)生成時(shí)間
publicstaticStringformatTime(){
DateFormatdateFormat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
Calendarcalendar=Calendar.getlnstance();
//獲取當(dāng)前時(shí)司
DatecurrcntDate=calendar.getTime();
//設(shè)置一個(gè)起始時(shí)間(七天前)
calendar.add(Calendar.DATE,-7);
DatestartDale=calendar.getTime();
//獲取七天內(nèi)為一個(gè)隨機(jī)時(shí)間
longdateTime=startDate.getTime()+(long)(newRandom().nextDouble()*
(currcntDate.gctTimc()-startDatc.gctTimc()));
returndatcFormat.format(datcTimc);
}
//3、隨機(jī)生成uH
publicstaticStringsampleUrl(){
inturINum=newRandom().nextInt(urlPa(hs.length);
returnurlPaths[urlNum];
}
//4、隨機(jī)生成檢索
publicstaticStringsampleReferer(){
Randomrandom=newRandom();
intrefNum=random.nextlnt(httpReferers.length);
intqueryNum=random.nextlnt(searchKeyword.length);
if(random.nextDoubleO<0.2){
return
1
Stringquery_s(r=searchKeyword[queryNum];
StringreferQuery=String.fbnnat(httpReferers[refNumJ,query_str);
returnreferQuery;
)
〃5、隨機(jī)生成狀態(tài)碼
publicstaticStringsampleStatusCode(){
intcodeNum=newRandom().nextInt(statusCodes.length);
returnstatusCodes[codeNumJ;
1
//6、生成日志方法
〃輸出日志格式:02,2022-11-1409:06:0(1,"GET/tag/listHTTP/1.1二https://
/search?p=M$iJ粘貼玩大數(shù)據(jù),404
publicstaticStringgenerateLogO{
Stringip=samplelpO;
StringnewTime=fbrmatTime();
Stringurl=sampleUrl();
Stringreferer=sampleReferer();
Stringcode=samplcStatusCodc();
Stringlog=ip++newTime++"V'GET./"+url+"HTTP/1.1\""+"J+
referer++code;
System.oul.println(log);
returnlog;
)
〃三、主類
publicstaticvoidmain(S(ring[]args)(hrowslOException,InlerruptedException{
〃desi:生成日志的路徑
//Stringdest=7home/access.log";
Stringdest="access.log1';
Filefile=newFilc(dcst);
//num:每次生成條數(shù)
//sleepTime:多久生成一次
intnum,sleepTime;
if(args.length==2){
num=Integer.valueOf(args[0]);
sleepTime=Integer.valueOf(args[1]);
}else{
num=50;
sleepTime=10;
)
while(true){
for(inti=0;i<num;i++){
Stringcontent=generateLogO+"\n";
FileOutputStreamfos=newFileOutputStream(file,true);
fos.write(content.getBytes());
③代碼解釋
Stringdest='7home/access.log,';
若解開(kāi)注釋,使用此行代碼,則表示模擬生產(chǎn)的日志所存儲(chǔ)的路徑
/home/access.log,需要注意的是,此為服務(wù)器上的路徑,而且是root用戶才具有
寫(xiě)權(quán)限,如果不是201用戶請(qǐng)修改成其他可寫(xiě)路徑。
在Windows系統(tǒng)的編輯器開(kāi)發(fā)的時(shí)候,可以改成Windows上的路徑來(lái)測(cè)試
一下生成的日志是否為自己想要的,如DA\access.log,表示生成的日志在
D:\\access.logo若代碼中直接使用access.log,表示直接生成文件在項(xiàng)目目錄下。
當(dāng)執(zhí)行此類時(shí),日志就會(huì)不斷生成到所設(shè)置的路徑,而日志格式如圖7-9所示。
45,2022-11-0920:13:38,"GET/article/104.htmlHTTP/L1",
/隧2向?口=學(xué)習(xí)大數(shù)據(jù)常用Linux命令,200
64,2022-11-1011:39:16,"GET/article/104.htmlHTTP/1.1°,-,200
21,2022-11-1405:51:41,"GET/article/104.htmlHTTP/1.1",hllps://search.yah
/search?p=Elasticsearch的安裝,404
3,2022-11-1208:45:44,"GET/video/322HTTP/LIu,/search?
q=window7系統(tǒng)上Centos7的安裝,404
4,2022-11-1412:22:46,"GET/article/102.htmlHTTP/1.1",https://www.sogou.co
m/web?quer),=Elasticsearch的安裝,500
64,2022-11-0804:31:54,"GET/article/104.htmlHTTP/1.1",https://www.baidu
com/s?wd=網(wǎng)站用戶行為分析,200
02,2022-11-1020:13:50,"GET/article/104.htmlHTTP/1.1",https://www.sog
/web?query=Kafka的安裝及發(fā)布訂閱消息系統(tǒng),200
45,2822.11-8926:13:38r-GET/article/m.htilHTTP/1.1學(xué)習(xí)大好推常用Linux命令,288
33,102.71,164,2922-11-10ll:39:16r-GST/artlcle/lG4.htalHTTP/1.1?.?.288
145.33.102,121,2022-11-1465:51:41r%ET/articlt/lG4.ht?XHTTP/1.1”,“a.=仃Ci的安裝,4強(qiáng)
3,2922-11-1208:45:44,"GEF/vldeo/322HTTP/1.1
67.67.33.5^,2922-11-1412:22:46,"GET/articl?/ie2.ht?lHTTP/1.1
16^.022-11-0884:31:54J$ET/4'ticle/m.ht?lHTTP/1.1,https網(wǎng)站用戶行為分析,299
162.145.16^.102,2022-11-1026:13:58,,GET/artlcle/ie4.htfllHTTP/1.1ragoiKCon/RetPauary二Kafka的甜片處而打闋沼息的統(tǒng),2
145.164.16^.164,2622-11-6984:34:49,,GET/vldeo/522HTTP/1.1".https:〃cn.blnq.:on/search?q學(xué)習(xí)大故提常用Linux/令.288
182.121.121.71,2022?ll?8887:83:02,*ETHTTP/1.1",Ztp??:〃cn.binq.二學(xué)習(xí)大施常用"nu*命令,288
圖7-9H志格式
生成隨機(jī)時(shí)間,為了展示效果美觀,本實(shí)訓(xùn)模擬生成七天的數(shù)據(jù),在實(shí)際操
作過(guò)程中,可以不模擬七天,直接返回當(dāng)天日期即可。
此外,還可以在執(zhí)行的時(shí)候添加參數(shù),第一個(gè)參數(shù)為一個(gè)批次生成的條數(shù),
第二個(gè)參數(shù)為多少秒生成一次,如不設(shè)置,則默認(rèn)是每10秒生成50條。
④測(cè)試生成日志
接下來(lái)可以先在Windows本地測(cè)試運(yùn)行,觀察運(yùn)行結(jié)果是否有問(wèn)題。注意目
前所設(shè)置的路徑為:access.logo如圖7-10所示。
〃三、主類
publicstaticvoidmain(String[]args)throwslOException,Interrupte
〃dest:生成日志的路徑
//Stringdest="/home/access.log";
Stringdest="access.log";
Filefile=newFile(dest);
圖7-10設(shè)置路徑并執(zhí)行
點(diǎn)擊執(zhí)行按鈕,稍等一小會(huì),可以發(fā)現(xiàn)項(xiàng)目目錄下有日志文件access.log生
成了,如圖7-11所示;控制臺(tái)也有顯示,如圖7-12所示。
logstatsrcmainjavacombigdatahadoopgenerate0GenerateLogQmain
V
Q>國(guó)...?I。一fTIpom.xml(logstat)0GenerateLog.java
O
XvBglogstatC:\Users\shaonaiyiStringreferer=sampleRefererO;
■
>?.ideaStringcode=sampleStatusCodeO;
>MlsrcStringlog=ip+","+newTime+'
>target
ns1,一System.out.printin(log);
白access.log
returnlog;
DIpom.xmlI
r
>lllllExternalLibraries
%ScratchesandConsoles
〃三、主類
121?@publicstaticvoidmain(String[]args)
圖7-11查看文件日志
"C:\Progra?Files\Java\jdk-11.6.6\bir\jdva,exe**??javaagent:C:\ProgranFiles\Jet8ralns\ldeaIC-2e22\llb\lded.rt.jars53730:C:\PrcgranF:
45,2922-11-6920:13:38,"GCT/articl?/164.htiiXHTTP/1.1tp5://cn.b^nq.c。L/$?!鰎ch?q=學(xué)習(xí)大觸段京用Linux命令,2。。
64,2022-11-1811:39:16,-6(1/articl?/lG4.ht?\HTTP/1.1\-r2GG
145.33.102,121,2822-11-1^85:51:41,*€ET/artlcle/164.htnlHTTP/1.1'.https:〃search.yahg.con/se"ch?p=El』t"se"cl^)^ig.4M
7
3,2022-11-1268:45:44,"GE1/vldeo/322HTTP/1.1?rhUflJ.ZZcnJang.CQ11/1cATCh2fl=wInUtt?^WltCtntos7?5?r404
^,2622-11-1^12:22:46/GEI/article/ie2.htnlHTTP/1.1%http$.$o£oy.,wn/jieb?aueryEldlcswaah的安第,588
64,2622-11-6884:31:54,PET/article/m.htnlHTTP/1.1?fhttos://總*?.baldUACon/slyd二或M用戶為分析.288
62/2622-11-1028:13:56/6£1/artic\?/m.htn\HTTP/1.1??hr”?〃?皿.“qou.8"?Qb?Q“r=Kafk金的犯K及發(fā)布訂閱消息察地.288
圖7-12控制臺(tái)中查看結(jié)果
⑤打包
接下來(lái)可以將代碼打包到服務(wù)器上執(zhí)行,使生成的日志在服務(wù)器的/home路
徑下。此時(shí)需要注釋掉Windows路徑,修改為L(zhǎng)inux服務(wù)器的路徑,如圖7-13
所示。
〃三、主類
publicstaticvoidnain(String[]args)throwslOException,InterruptedException{
〃dest:生成日志的路徑
Stringdest="/home/access.log";
//Stringdest="access.log";
Filefile=newFile(dest);
圖7-13修改日志路徑
此外,因?yàn)榉?wù)器上的JDK版本是8,而在Windows的版本為jdkll的話,
需要設(shè)置一下打包的項(xiàng)目語(yǔ)言級(jí)別才能兼容。點(diǎn)擊“ProjectSlructuQ-'Projecl”,
在“LanguageLevel"選擇服務(wù)器上相應(yīng)的語(yǔ)言級(jí)別,JDK8對(duì)應(yīng)的是8級(jí)別,如
圖7-14所示。
目ProjectStructure
4-
Project
ProjectSettings
Defaultsettingsforallmodules.ConfiguretKscparametersforeachmoduleonthemodulepageasneeded.
Modules
Name:logstat
Libraries
Facets
SDK:'110racleOpenJDKversion11.0.6▼£dit
Artifacts
PlatformSettings
Languagele/d:8-lambdas,typeannotationsetc.▼
SDKs
GlobalLibraries
Compileroutput:-\ldeaProjects\logstat\out
ProblemsUsedformodules'subdirectories.ProductionandTestdirectoriesforthecorrespondingsources.
圖7-14選擇對(duì)應(yīng)的語(yǔ)言級(jí)別
此外,還需要修改一下pom.xml文件中編譯代碼的JDK版本,此處修改為8,
默認(rèn)是11。如圖7-15所示。
目EilcEditViewNavigateCodeBefactorQuikiRunJoolsVCSWindowHelplogstat-pom.xml(logstat)
logstatHIpom.xml
1H...?Z■=■。一tilpom.xml(logstat)0GenerateLog.java
dyBjlogstat<?xalversion=M1.0-encoding=,'UTF-8"?>
?>M.idea<projectxnlns="http://maven.apache.org/POM/4.0.0M
>xnlns:xsl=Mhttp://www.wJ.org/20Bl/XMLSchema-instancew
>,targetxsi:schenaLocation-Mhttp://maven.apache.org/POM/4.0.0http://naven
access.log
<modelVersion>^.8.0</?odelVersion>
|mpomxml|
>lllliExternallibraries
<groupId>com.bigdata.hadoop</groupld>
%ScratchesandConsoles
<artifactld>logstat</artifac:ld>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.conpiler.source>8</raaven.compiler.source>
<maven.conpiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
17〈/project)
圖7-15設(shè)置編譯的JDK版本
接著就可以將代碼進(jìn)行打包了,先點(diǎn)擊編輯器右側(cè)欄的“Maven”,再依次
找到“package",如圖7-16所示。
GenerateLog▼A益(VQur
-E
MavenM
va
▼0,士+Q仆0W,aAne
nee"
vftlogstat-
.0.0hQAVEN?A?LifecycleN
Qcleanm
Uvalidaten
Qcompiles
btest
Mpackage
0verify
Qinstall
Qsite
Qdeploy
>%Plugins
圖7-16打包項(xiàng)目
雙擊“package”按鈕,則可以對(duì)項(xiàng)目進(jìn)行打包,如打包成功,控制臺(tái)將會(huì)顯
示構(gòu)建成功的標(biāo)志。如圖7-17所示。
[INFO]
[INFO]BUILDSUCCESS
[INFO]-
[INFO]Totaltime:8.531s
[INFO]Finishedat:2622-11-14T16::15+08:66
[INFO]
Processfinishedwithexitcode0
圖7-17打包成功的標(biāo)志
打耍成后,發(fā)現(xiàn)項(xiàng)目里多了target文件夾,相應(yīng)的jar包也生成了。如圖
7-18所示。
logstatmpom.xml
Hlpom.xml(logstat)0GenerateLog.java
<projectxmlns="http://maven.apache
xmlns:xsi="http://www.v/3.o
xsi:schemaLocation="http:/
target<modelVersion>^i.0.0</modelVersi
classes
generated-sources
<groupld>com.bigdata.hadoop</gr
maven-archiver
<artifactld>logstat</artifactld
maven-status
11logstat-1.0-SNAPSHOT.iar.<version>l.0-SNAPSHOT(八ersion)
maccess.log
mpom.xml
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽省交通控股集團(tuán)有限公司部分直屬單位2026屆校園招聘?jìng)淇碱}庫(kù)及完整答案詳解一套
- 2025年武漢人才服務(wù)發(fā)展有限公司招聘工作人員備考題庫(kù)完整參考答案詳解
- 2025年九江市供銷企業(yè)集團(tuán)公開(kāi)招引人才備考題庫(kù)含答案詳解
- 2025年張家港市大新鎮(zhèn)人民醫(yī)院自主招聘編外合同制衛(wèi)技人員備考題庫(kù)及1套完整答案詳解
- 2025年資陽(yáng)益??叼B(yǎng)產(chǎn)業(yè)有限公司招聘醫(yī)生備考題庫(kù)參考答案詳解
- 中國(guó)成達(dá)工程有限公司2026年校園招聘?jìng)淇碱}庫(kù)及參考答案詳解一套
- 2025年廣州南沙人力資源發(fā)展有限公司招聘公辦幼兒園編外工作人員備考題庫(kù)參考答案詳解
- 2025年湖北文理學(xué)院第二批專項(xiàng)公開(kāi)招聘工作人員12人備考題庫(kù)及答案詳解1套
- 2025年首都醫(yī)科大學(xué)附屬北京中醫(yī)醫(yī)院面向應(yīng)屆畢業(yè)生(含社會(huì)人員)公開(kāi)招聘?jìng)淇碱}庫(kù)參考答案詳解
- 2025年臺(tái)江縣民族中醫(yī)院第四次公開(kāi)招聘?jìng)浒钢茖I(yè)技術(shù)人員7人實(shí)施備考題庫(kù)完整答案詳解
- 2025年云南省人民檢察院聘用制書(shū)記員招聘(22人)備考筆試題庫(kù)及答案解析
- 2026屆四川涼山州高三高考一模數(shù)學(xué)試卷試題(含答案詳解)
- 銀行黨支部書(shū)記2025年抓基層黨建工作述職報(bào)告
- 腫瘤標(biāo)志物的分類
- 2025山西忻州市原平市招聘社區(qū)專職工作人員50人考試歷年真題匯編附答案解析
- 中藥煎煮知識(shí)與服用方法
- 2026東莞銀行秋季校園招聘?jìng)淇碱}庫(kù)及答案詳解(基礎(chǔ)+提升)
- 消防水泵房管理制度及操作規(guī)程
- 野戰(zhàn)軍生存課件
- 儀表設(shè)備管路脫脂方案(中英)
- 分析青花瓷在幼兒園美術(shù)活動(dòng)中的應(yīng)用
評(píng)論
0/150
提交評(píng)論