版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課后習(xí)題參考答案
【項(xiàng)目1:數(shù)據(jù)采集與預(yù)處理準(zhǔn)備】
1、通過(guò)網(wǎng)絡(luò)收集資料,了解常用的ETL工具有哪些?
(1)Kettle:KelUe是一款國(guó)外開(kāi)源的ETL工具。KelUe是純java編寫(xiě),具有高效且
穩(wěn)定的數(shù)據(jù)抽取功能。
(2)FineDataLink:FineDataLink數(shù)據(jù)集成平臺(tái)(簡(jiǎn)寫(xiě):FDL)是國(guó)內(nèi)知名商業(yè)智能
廠商帆軟面向IT人員推出的企業(yè)級(jí)一站式數(shù)據(jù)集成平臺(tái)產(chǎn)品,擁有實(shí)時(shí)同步和離線計(jì)算兩
大引擎,具備實(shí)時(shí)數(shù)據(jù)同步、ETL和ELT定時(shí)數(shù)據(jù)計(jì)算等核心能力。
(3)Talend:Talend中文名拓藍(lán),是一個(gè)開(kāi)源的ETL數(shù)據(jù)集成解決方案,與企業(yè)內(nèi)
部和云端的數(shù)據(jù)源都兼容。該平臺(tái)包括數(shù)百個(gè)預(yù)建的集成,簡(jiǎn)化了數(shù)據(jù)處理流程。除了開(kāi)
源版本,Talend還提供了一個(gè)付費(fèi)的數(shù)據(jù)管理平臺(tái),包括用于生產(chǎn)力、設(shè)計(jì)、管理、監(jiān)控
和數(shù)據(jù)治理的額外工具和功能。
(4)DataStage:DataStage是IBM公司的商業(yè)軟件,它為整個(gè)ETL過(guò)程提供了一個(gè)
圖形化的開(kāi)發(fā)環(huán)境,是一套專(zhuān)門(mén)對(duì)多種操作數(shù)據(jù)源的數(shù)據(jù)抽取、轉(zhuǎn)換和維護(hù)過(guò)程進(jìn)行簡(jiǎn)化
和自動(dòng)化,并將其輸入數(shù)據(jù)集或數(shù)據(jù)倉(cāng)庫(kù)的集成工具,適合大規(guī)模的ETL應(yīng)用。
2、通過(guò)網(wǎng)絡(luò)收集資料-了解日志采集系統(tǒng)有哪些?基于python的網(wǎng)絡(luò)爬蟲(chóng)框架有哪
些?
流行的日志采集系統(tǒng)包括:
Cloudera/ApacheFlume:這是一個(gè)高可用的、高可靠的、分布式的海量日志興集、聚
合和傳輸系統(tǒng)。
FacebookScribe:Facebook開(kāi)發(fā)的日志采集系統(tǒng)。
ManageEngineEventLogAnalyzer:適用于Windows操作系統(tǒng)的日志管理系統(tǒng)c
MicrosoftLogParser:微軟開(kāi)發(fā)的日志解析工具。
Filebeat:用于轉(zhuǎn)發(fā)和集中日志數(shù)據(jù)的輕量級(jí)傳送程序,可以收集日志事件并轉(zhuǎn)發(fā)到
Elasticscarch或Logstash進(jìn)行索引。
Graylog:一個(gè)開(kāi)源的日志聚合、分析、審計(jì)、展現(xiàn)和預(yù)警工具,功能上類(lèi)似于ELK,
但更簡(jiǎn)單、高效且部署使用簡(jiǎn)單。
LogDNA:提供基于代理和無(wú)代理的日志收集,支持syslog和HTTP(S)以及全文搜
索和可視化,可以作為SaaS或內(nèi)部使用。
基于python的網(wǎng)絡(luò)爬蟲(chóng)框架有:
Scmpy是一個(gè)可以爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫(xiě)的應(yīng)用框架,能夠應(yīng)用在數(shù)
據(jù)挖掘、信息處理、存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。
Pyspider是用pylhon實(shí)現(xiàn)的的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng),可以在瀏覽器界面上編寫(xiě)腳本,也可以
實(shí)時(shí)查看功能的調(diào)度和爬取結(jié)果。后端使用常用的數(shù)據(jù)庫(kù)進(jìn)行爬取結(jié)果的存儲(chǔ),并且還能
定時(shí)設(shè)置任務(wù)與任務(wù)優(yōu)先級(jí)。
Crawley可以快速爬取對(duì)應(yīng)網(wǎng)站的相關(guān)內(nèi)容,支持關(guān)系和非關(guān)系數(shù)據(jù)庫(kù),數(shù)據(jù)可以導(dǎo)
出的格式為JSON、XML等。
Portia是scrapyhub開(kāi)源的一款可視化爬蟲(chóng)規(guī)則編寫(xiě)工具。它提供可視化Web頁(yè)面,
用戶只需耍通過(guò)點(diǎn)擊標(biāo)注頁(yè)面上需要抽取的數(shù)據(jù),不需要任何編程知識(shí)即可完成規(guī)則開(kāi)發(fā)。
BeautifulSoup是一個(gè)可以從HTML或XML文件中提取數(shù)據(jù)的Python庫(kù),它可以通
過(guò)用戶喜歡的轉(zhuǎn)換器實(shí)現(xiàn)慣用的文檔導(dǎo)航、查找、修改文檔的功能。
Grab是一個(gè)用于構(gòu)建Web模板的Python框架,用戶可以通過(guò)Grab構(gòu)建各種復(fù)雜的網(wǎng)
頁(yè)抓取工具,從簡(jiǎn)單的兒行腳本到處理數(shù)百萬(wàn)個(gè)網(wǎng)頁(yè)的復(fù)雜異步網(wǎng)站抓取工具。Grab能夠
提供一個(gè)API用于執(zhí)行網(wǎng)絡(luò)請(qǐng)求和處理接收到的內(nèi)容,比如與HTML文檔的DOM樹(shù)進(jìn)行
交互。
3^布隆過(guò)濾器(BloomFilter)的基本思想是什么?
布隆過(guò)濾器的基本思想是,當(dāng)一個(gè)元素被加入集合時(shí),通過(guò)上個(gè)散列函數(shù)將這個(gè)元素
映射成一個(gè)位數(shù)組中的攵個(gè)點(diǎn),把它們置為1。檢索時(shí),只要看看這些點(diǎn)是不是都是1就知
道集合中有沒(méi)有被檢元素:如果這些點(diǎn)有任何一個(gè)是0,則被檢元素一定不在;如果都是1,
則被檢元素很可能存在。
4、現(xiàn)實(shí)世界采集到的大量的、各種各樣的數(shù)據(jù)一般具有哪些特征?
(1)不完整性。不完整性指的是數(shù)據(jù)記錄中可能會(huì)出現(xiàn)有一些數(shù)據(jù)屬性的值丟失或不
確定的情況,還有可能缺失必需的數(shù)據(jù)。
(2)含噪聲。含噪聲指的是數(shù)據(jù)具有不正確的屬性值,包含錯(cuò)誤或存在偏離期望的離
群值(指與其他數(shù)值比較差異較大的值)。
(3)雜亂性(不一致性)。原始數(shù)據(jù)是從各個(gè)實(shí)際應(yīng)用系統(tǒng)中獲取的,由于各應(yīng)用
系統(tǒng)的數(shù)據(jù)缺乏統(tǒng)一標(biāo)準(zhǔn)的定義,數(shù)據(jù)結(jié)構(gòu)也有較大的差異,因此各系統(tǒng)間的數(shù)據(jù)存在
較大的不一致性。
5、數(shù)據(jù)采樣技術(shù)分為哪幾種?
數(shù)據(jù)采樣技術(shù)分為加權(quán)采樣、隨機(jī)采樣和分層采樣3類(lèi),其目的是從數(shù)據(jù)集口采集部
分樣本進(jìn)行處理。
6、填補(bǔ)遺漏的數(shù)據(jù)值,處理不完備數(shù)據(jù)集的方法主要有哪些類(lèi)型?
①刪除元組
刪除元組就是將存在遺漏信息屬性值的對(duì)象(元組,記錄)刪除,從而得到一個(gè)完
備的信息表。
②數(shù)據(jù)補(bǔ)齊
這類(lèi)方法是用一定的值去填充空值,從而使信息表完備化。通常基于統(tǒng)計(jì)學(xué)原理,根
據(jù)決策表中其余對(duì)象取值的分布情況來(lái)對(duì)?個(gè)空值進(jìn)行填充,數(shù)據(jù)挖掘中常用的補(bǔ)齊方法
有以下幾種。
a.人工填寫(xiě):由于最了解數(shù)據(jù)的是用戶自己,因此這個(gè)方法產(chǎn)生的數(shù)據(jù)偏離最小,可
能是填充效果最好的一種。然而,一一般來(lái)說(shuō),此方法很費(fèi)時(shí);當(dāng)數(shù)據(jù)規(guī)模很大、空值很多
的時(shí)候,此方法是不可行的。
b.特殊值填充:將空值作為一種特殊的屬性值來(lái)處理,它不同于其他的任何屬性值,
如所有的空值都用“unknown”填充。如果該缺失值與預(yù)測(cè)值具有高度相關(guān)性,可能導(dǎo)致
嚴(yán)重的數(shù)據(jù)偏離,一般不推薦使用。
c.平均值填充:將信息表中的屬性分為數(shù)值屬性和非數(shù)值屬性來(lái)分別進(jìn)行處理如
果空值是數(shù)值型的,則使用該屬性在其他所有對(duì)象的取值的平均值來(lái)填充該缺失的屬性
值;如果空值是非數(shù)值型的,則根據(jù)統(tǒng)計(jì)學(xué)中的眾數(shù)原理,用該屬性在其他所有對(duì)象的
取值次數(shù)最多的值(即出現(xiàn)頻率最高的值)來(lái)補(bǔ)齊該缺失的屬性值。
d.熱卡填充(或就近補(bǔ)齊):對(duì)于一個(gè)包含空值的對(duì)象,熱卡填充法在完整數(shù)據(jù)
中找到一個(gè)與它最相似的對(duì)象,并用這個(gè)相似對(duì)象的信來(lái)進(jìn)行填充。
e.火近鄰法:先根據(jù)歐式距離或相關(guān)分析來(lái)確定距離具有缺失數(shù)據(jù)樣本最近的2個(gè)樣
本,再將這七個(gè)值加權(quán)平均來(lái)估計(jì)該樣本的缺失數(shù)據(jù)。
f.使用所有可能的值填充:這種方法用空缺屬性值的所有可能的屬性取值來(lái)填充,
能夠得到較好的補(bǔ)齊效果。
g.組合完整化方法:這種方法用空缺屬性值的所有可能的屬性取值來(lái)嘗試,并從最
終屬性的約簡(jiǎn)結(jié)果中選擇最好的一個(gè)作為填補(bǔ)的屬性值。
h.回歸:基于完整的數(shù)據(jù)集,建立回歸方程(模型)。對(duì)于包含空值的對(duì)象,將已知
屬性值代入方程可估計(jì)未知屬性值,以此估計(jì)值來(lái)進(jìn)行填充。
③平滑有噪聲數(shù)據(jù)
噪聲是?個(gè)測(cè)量變量中的隨機(jī)錯(cuò)誤或偏差,包含錯(cuò)誤值或偏離期望的孤立點(diǎn)值。數(shù)據(jù)
平滑技術(shù)包括以下幾種。
a.分箱:分箱方法通過(guò)考察數(shù)據(jù)的“近鄰”(即周?chē)闹?來(lái)平滑有序數(shù)據(jù)值。
b.回歸:也可以用一個(gè)函數(shù)擬合數(shù)據(jù)來(lái)平滑數(shù)據(jù)。
c.聚類(lèi):可以通過(guò)聚類(lèi)來(lái)檢測(cè)離群點(diǎn),將類(lèi)似的值組織成群或簇。
【項(xiàng)目2:]
一、單項(xiàng)選擇題
(1)關(guān)于urllib.parse模塊中的urlencode。函數(shù)的說(shuō)法,正確的是(C)。
A.它用來(lái)給傳輸數(shù)據(jù)送行加密
B.它接受字符串作為參數(shù),對(duì)參數(shù)中的中文進(jìn)行編碼
C.它接受字典作為參數(shù),對(duì)參數(shù)中的中文進(jìn)行編碼
D.如果傳入的參數(shù)不包括中文,則會(huì)報(bào)錯(cuò)
(2)關(guān)于urllib.parse模塊中的quote。函數(shù)的說(shuō)法,正確的是(B)。
A.它用來(lái)給傳輸數(shù)據(jù)達(dá)行加密
B.它接受字符串作為參數(shù),對(duì)參數(shù)中的中文進(jìn)行編碼
C.它接受字典作為參數(shù),對(duì)參數(shù)中的中文進(jìn)行編碼
D.如果傳入的參數(shù)不包括中文,則會(huì)報(bào)錯(cuò)
(3)使用urHib中Request類(lèi)構(gòu)建請(qǐng)求,添加請(qǐng)求頭最常見(jiàn)的方法是通過(guò)修改(A)來(lái)
偽裝瀏覽器。
A.User-Agent
B.add_hcadcr
C.heads
D.add
(4)利用urllib.request模塊中最基本的(C)方法,可以完成對(duì)簡(jiǎn)單網(wǎng)頁(yè)的請(qǐng)求和抓取。
A.urlparse
B.urlencode
C.urlopen
D.urlunparse
(5)urllib庫(kù)中能用于構(gòu)建一個(gè)HTTP請(qǐng)求的函數(shù)是(A)
A.request()
B.get()
C.urlparse()
D.post()
(6)在Selenium中,如何模擬鼠標(biāo)操作?(A)
A.使用click。方法
B.使用sendKeys。方法
C.使用submit。方法
D.使用get()方法
⑺在Selenium中,如何模擬鍵盤(pán)操作?(B)
A.使用click。方法
B.使用sendKeys。方法
C.使用submit。方法
D.使用get。方法
(8)在Selenium中,如何處理彈出窗口?(C)
A.使用switch」o.alerl()方法
B.使用switch_to.frame()方法
C.使用switch_to_window()方法
(9)下列選項(xiàng)中,不屬于請(qǐng)求報(bào)頭的是(D)。
A、User-Agent
Cookie
C、Referer
D、Content-Type
(10)下列狀態(tài)碼中,表示客戶端的請(qǐng)求有錯(cuò)誤的是(C)。
A、200
B、304
C、403
D、500
(11)下列請(qǐng)求報(bào)頭中,可以記載用戶信息實(shí)現(xiàn)模擬登錄的是(B)。
A、User-Agent
B、Cookie
C、Connection
D、Host
二、填空題
(1)在下面的表格中,列出了一些路徑表達(dá)式,請(qǐng)寫(xiě)出表達(dá)式的含義
路徑表達(dá)式結(jié)果|
/bookstore/book[l]選取屬于bookstore子元素的第一個(gè)book元
素。
/bookstore/book[last()]選取屬于bookstore子元素的最后一個(gè)book
元素。
/bookstore/book|last()-1]選取屬于bookstore子元素的倒數(shù)第二個(gè)book
兀素O
/bookstorc/book[position()<3選取最前面的兩個(gè)屬于bookstore元素的子元
1素的book元素。
//title[@lang]選取所有擁有名為lang的屬性的title元素。
//title[@lang='eng']選取所有title元素,且這些元素?fù)碛兄禐閑ng
的lang屬性。
/bookstore/book[price>35.00選取bookstore元素的所有book元素,且其中
]的price元素的值須大于35.00。
/bookstore/book[price>35.00選取bookstore元素中的book元素的所有
]/titletitle元素,且其中的price元素的值須大于35.00。
//book/title|//book/price選取book元素的所有title和price元素c
//title|//price選取文檔中的所有title和price元素。
/bookstore/book/title|//price選取屬于bookstore元素的book元素的所有
title元素,以及文檔中所有的price元素。
(2)HTML部分結(jié)構(gòu)如下:
<Iibrary>
<books>
<bookid="book1">數(shù)據(jù)采集與預(yù)處理</book>
<bookid="book2">大數(shù)據(jù)運(yùn)維技術(shù)v/book>
<bookid="book3">數(shù)據(jù)分析v/book>
</books>
<records>
<items>
<date>2022-05-02</date>
<personname="張三豐"class=="boxl"/>
</items>
<items>
<date>2022-05-01</date>
<pcrsonnamc="張無(wú)忌"class="box2"/>
</items>
</records>
</library>
通過(guò)Xpath實(shí)現(xiàn)如下元素定位:
(1)查詢所有的book節(jié)點(diǎn):/library/books/book。
(2)查詢第二個(gè)book節(jié)點(diǎn):/library/books/book|2]0
(3)查詢person的同性:/library/records/items/Derson/attributeO。
(4)查詢所有book節(jié)點(diǎn)值中帶有“運(yùn)維”字符串的book節(jié)點(diǎn):
/library/books/book[contains(textQ,'實(shí)例')]
(5)查詢所有date節(jié)點(diǎn)值中帶有“05”字符串的items節(jié)點(diǎn):
/library/rccords/itcms/datc[contains(tcxt0、'05')]/parcm::itcms。
(6)查詢所有屬性節(jié)點(diǎn)值帶有“box”字符串的person節(jié)點(diǎn):
/librarY/records/items/person[contains(@name,'box')orcontains(@class,'box')l。
(7)查詢所有的book節(jié)點(diǎn)的文本值:/Iibrary/books/book/lexl。
三、操作題
答案建源代碼附件
【項(xiàng)目3:日志數(shù)據(jù)采集實(shí)踐】
1、FlumefitlSource,Sink,Channel的作用?
(1)Source組件是專(zhuān)門(mén)用來(lái)收集數(shù)據(jù)的,可以處理各種類(lèi)型、各種格式的日志數(shù)據(jù),
包括avro、thrift、exec、jms、spoolingdirectorynetcal、sequencegeneratorsyslog^http^
legacyo
(2)Channel組件對(duì)采集到的數(shù)據(jù)進(jìn)行緩存,可以存放在Memory或File中。
(3)Sink組件是用于把數(shù)據(jù)發(fā)送到目的地的組件,目的地包括Hdfs、Logger,avro.
thrift、ipc>file、Hbase、solr、自定義。
2、如何通過(guò)Flume參數(shù)設(shè)置進(jìn)行調(diào)優(yōu)?
(1)Source參數(shù)設(shè)置
增力IISource個(gè)數(shù)(使月TairDirSource時(shí)可增力IIFileGroups個(gè)數(shù))可以增大Source的
讀取數(shù)據(jù)的能力。例如:當(dāng)某一個(gè)目錄產(chǎn)生的文件過(guò)多時(shí)需要將這個(gè)文件目錄拆分成多個(gè)
文件目錄,同時(shí)配置好多個(gè)Source以保證Source有足夠的能力獲取到新產(chǎn)生的數(shù)據(jù)。
batchSize參數(shù)決定Source一次批量運(yùn)輸?shù)紺hannel的event條數(shù),適當(dāng)調(diào)大這個(gè)參數(shù)可.以
提高Source搬運(yùn)Event至ljChannel時(shí)的性能。
(2)Channel參數(shù)設(shè)置
type選擇memory時(shí)Channel的性能最好,但是如果Flume進(jìn)程意外掛掉可能會(huì)丟失
數(shù)據(jù)。type選擇file時(shí)Channel的容錯(cuò)性更好,但是性能上會(huì)比memorychannel差。使用
fileChannel時(shí)dataDirs配置多個(gè)不同盤(pán)下的目錄可以提高性能。
Capacity參數(shù)設(shè)置,Capacity參數(shù)決定Channel可容納最大的event條數(shù)。
transactioncapacity參數(shù)設(shè)置,transactioncapacity參數(shù)決定每次Source往channel里面
寫(xiě)的最大event條數(shù)和每次Sink從channel里面讀的最大event條數(shù)。transactioncapacity
需要大于Source和Sink的batchSize參數(shù)。
(3)Sink參數(shù)設(shè)置
增加Sink的個(gè)數(shù)可以增加Sink消費(fèi)event的能力。Sink也不是越多越好,過(guò)多的Sink
會(huì)占用系統(tǒng)資源,造成系統(tǒng)資源不必要的浪費(fèi)。batchSize參數(shù)決定Sink一次批量從Channel
讀取的event條數(shù),適當(dāng)調(diào)大這個(gè)參數(shù)可以提高Sink從Channel消費(fèi)event的性能。
3、請(qǐng)簡(jiǎn)單介紹一下Flume中的事務(wù)機(jī)制
Flume的事務(wù)機(jī)制(類(lèi)似數(shù)據(jù)庫(kù)的事務(wù)機(jī)制):Flume使用兩個(gè)獨(dú)立的事務(wù)分別負(fù)責(zé)
從Soucrce至ljChannel,以及從Channel至I]Sink的事件傳遞。比如spoolingdirectorysource為
文件的每一行創(chuàng)建一個(gè)事件,一旦事務(wù)中所有的事件全部傳遞到Channel且提交成功,那
么Soucrce就將該文件標(biāo)記為完成。同理,事務(wù)以類(lèi)似的方式處理從Channel到Sink的傳
遞過(guò)程,如果因?yàn)槟撤N原因使得事件無(wú)法記錄,那么事務(wù)將會(huì)回滾。且所有的事件都會(huì)保
持到Channel中,等待重新傳遞。
4、若Flume采集日志過(guò)程中突然停止,己經(jīng)采集但尚未寫(xiě)入的數(shù)據(jù)會(huì)不會(huì)丟失?請(qǐng)說(shuō)
明原因?
數(shù)據(jù)丟失與否的關(guān)鍵在于Channel是否開(kāi)啟了持久化。Flame的Channel充當(dāng)了數(shù)據(jù)緩
沖區(qū),負(fù)責(zé)在Source(數(shù)據(jù)源)和Sink(數(shù)據(jù)目的地)之間暫存數(shù)據(jù)。
Flume本身采用了事務(wù)機(jī)制來(lái)保證數(shù)據(jù)傳輸?shù)目煽啃裕碨ource到Channel和Channel
到Sink都是事務(wù)性的,只有當(dāng)下一個(gè)環(huán)節(jié)確認(rèn)成功接收,上一個(gè)環(huán)節(jié)才會(huì)將數(shù)據(jù)移除。因
此,理論上只要數(shù)據(jù)被成功寫(xiě)入Channel,就不會(huì)輕易丟失。但不同類(lèi)型的Channel在持久
化能力上存在根本差異,具體如下:
存儲(chǔ)數(shù)據(jù)持久
Channel類(lèi)型宕機(jī)后數(shù)據(jù)是否會(huì)丟失?適用場(chǎng)景
位置性
對(duì)吞L量要求極高,
會(huì)丟失“存儲(chǔ)在內(nèi)存隊(duì)列中的未處理數(shù)據(jù)會(huì)隨著
MemoryChannel內(nèi)存非持久化且能容忍少量數(shù)據(jù)
JVM進(jìn)程-■起消失,無(wú)法恢第。
丟失的業(yè)務(wù)。
不會(huì)丟失。它基于WAL(預(yù)寫(xiě)式日志)技術(shù),所對(duì)數(shù)據(jù)可靠性要求
本地
FileChannel持久化有操作先寫(xiě)磁盤(pán),右機(jī)重啟后可恢發(fā)崩潰前已提交的高,不允許日志丟失
磁盤(pán)
所有事務(wù)。的生產(chǎn)環(huán)境。
不會(huì)丟失。注意,這是兩種特殊的Source,并非
Spooling監(jiān)控本地日志文件,
Source自Channel,它們通過(guò)記錄已讀取文件的位置來(lái)保證可
DirectorySourceN/A這是比ExecSource
帶可靠性鴕性,即使Agent重啟,也能從斷點(diǎn)處繼續(xù)讀取,避
/TaildirSource更可靠的Source選擇
免數(shù)據(jù)丟失。
Flume通過(guò)事務(wù)來(lái)串聯(lián)數(shù)據(jù)傳輸?shù)母鱾€(gè)環(huán)節(jié),確保了“At-leasl-once”(至少一次)的投
遞語(yǔ)義。這意味著在正常情況下,數(shù)據(jù)不會(huì)在傳輸過(guò)程中“意外”丟失。唯一可能導(dǎo)致丟
失的場(chǎng)景,就是作為臨時(shí)緩沖區(qū)的Channel本身不具備持久化能力。
MemoryChannel的工作原理:它將數(shù)據(jù)存儲(chǔ)在內(nèi)存隊(duì)列中,速度極快。一旦Agent進(jìn)
程因故障、斷電等原因停止,這部分存在內(nèi)存中且尚未被Sink消費(fèi)的數(shù)據(jù)會(huì)立刻消失,無(wú)
法找回。
FileChannel的保障機(jī)制:它會(huì)先將數(shù)據(jù)寫(xiě)入磁盤(pán)中的日志文件,并定期執(zhí)行Checkpoint
(檢查點(diǎn))操作。即使Flume突然崩潰,重啟后系統(tǒng)會(huì)通過(guò)重新執(zhí)行WAL來(lái)恢復(fù)Channel
到崩潰前的狀態(tài),確保已提交的數(shù)據(jù)不丟失。
5、簡(jiǎn)述AvroSource、ExecSource>SpoolingDirectorySource的主要區(qū)別?
這三個(gè)Source是Flume中非常經(jīng)典的日志采集方式,它們的核心區(qū)別在于數(shù)據(jù)來(lái)源、
可靠性保證以及適用場(chǎng)景。下面是它們的主要區(qū)別總結(jié):
-數(shù)據(jù)來(lái)源不同:AvroSource通過(guò)網(wǎng)絡(luò)接收數(shù)據(jù);ExecSource通過(guò)執(zhí)行命令(如“l(fā)ail
-F”)獲取輸出;SpoolingDirectorySource則通過(guò)讀取本地指定目錄下的靜態(tài)文件來(lái)采集。
■可.靠性不同:ExecSource在進(jìn)程崩潰或命令重啟時(shí),可能丟失數(shù)據(jù)或產(chǎn)生重復(fù),可
靠性最低。而AvroSource和SpoolingDirectorySource都通過(guò)事務(wù)機(jī)制保證"至少一次”
的語(yǔ)義,可靠性更高。SpoohngSource還支持記錄文件讀取位置,避免重復(fù)。
-實(shí)時(shí)性不同:AvroSource和ExecSource支持接近實(shí)時(shí)的流式傳輸;Spooling
DirectorySource則更接近于“準(zhǔn)實(shí)時(shí)”的批量讀取,因?yàn)樗跈z測(cè)并讀取目錄中的文件。
-典型應(yīng)用場(chǎng)景:
-AvroSource:常用于多層FlumeAgent架構(gòu)中,作為接收上一層Agent轉(zhuǎn)發(fā)的數(shù)據(jù)
的節(jié)點(diǎn),實(shí)現(xiàn)跨網(wǎng)絡(luò)、跨節(jié)點(diǎn)的數(shù)據(jù)傳輸。
-ExecSource:適合測(cè)試環(huán)境,或采集少量、臨時(shí)的命令輸出,但因可靠性不足,
不建議在生產(chǎn)環(huán)境中使用。
-SpoolingDirectorySource:常用于采集已落盤(pán)的日志文件(如由日志服務(wù)輪轉(zhuǎn)后的
文件),適合不要求毫秒級(jí)實(shí)時(shí)性的場(chǎng)景。
下面詳細(xì)展開(kāi)這三個(gè)Source的機(jī)制和注意事項(xiàng):
I.AvroSource
-工作方式:它是一個(gè)基于ApacheAvroRPC(遠(yuǎn)程過(guò)程調(diào)用)協(xié)議的服務(wù)器,會(huì)監(jiān)
聽(tīng)一個(gè)端口,等待上游的FlumeAgent通過(guò)AvroSink發(fā)送數(shù)據(jù)。
-可靠性:高。它采用事務(wù)機(jī)制,只有當(dāng)數(shù)據(jù)成功寫(xiě)入Channel后,才會(huì)向發(fā)送端
確認(rèn),保證“至少一次”的語(yǔ)義。
-主要用途:作為Flume多層架構(gòu)中的“接收端”,用于匯總多個(gè)Agent的數(shù)據(jù),
或?qū)?shù)據(jù)跨網(wǎng)絡(luò)傳輸(比如從應(yīng)用服務(wù)器發(fā)送到中央口志收集器)。
特點(diǎn):天生是跨節(jié)點(diǎn)的流式傳輸,與Avr。Sink配對(duì)使用,是構(gòu)建分布式日志收集
鏈路的基石。
2.ExecSource
-工作方式:在啟動(dòng)時(shí)運(yùn)行一個(gè)用戶指定的Unix命令(例如“tail?F
/var/log/nginx/access.logM),并讀取該命令的標(biāo)準(zhǔn)輸出(Stdout)作為數(shù)據(jù)源。
-可靠性:低。這是其最大缺點(diǎn)。如果Agent崩潰或命令進(jìn)程中斷,重啟后命令會(huì)
從頭或從某個(gè)不確定的位置開(kāi)始執(zhí)行,這期間產(chǎn)生的數(shù)據(jù)無(wú)法被正確采集,容易導(dǎo)致數(shù)據(jù)
丟失或重復(fù)。同時(shí),它不支持事務(wù)。
-主要用途:官方文檔明確提示ExecSource不具備可靠性,僅建議用于測(cè)試、演示
或?qū)?shù)據(jù)丟失不敏感的場(chǎng)景。許多線上事故就是因使用“tail-F”的ExecSource引起的數(shù)
據(jù)丟失。
3.SpoolingDirectorySource
-工作方式:監(jiān)聽(tīng)一個(gè)本地磁盤(pán)上的目錄,讀取目錄中寫(xiě)入后不再被修改的“靜態(tài)”
文件(例如由日志輪轉(zhuǎn)生成的“.log”文件或“.tmp”文件)。
-可靠性:高。它會(huì)記錄每個(gè)文件已讀到的位置(基于偏移量),并采用事務(wù)機(jī)制,
支持“至少一次”的語(yǔ)義。即使在讀取過(guò)程中Agent重啟,也能從斷點(diǎn)繼續(xù),不會(huì)丟數(shù)據(jù)。
-主要用途:用于采集已經(jīng)落盤(pán)的日志文件,適合日志量不大、對(duì)實(shí)時(shí)性要求不高
的場(chǎng)景,或者應(yīng)用無(wú)法修改以直接輸出到網(wǎng)絡(luò)/控制臺(tái)時(shí)。
生產(chǎn)實(shí)踐建議
-絕對(duì)要避免在生產(chǎn)環(huán)境的核心鏈路中使用ExecSource,特別是用來(lái)“tail”實(shí)時(shí)
日志。
對(duì)于實(shí)時(shí)采集不斷寫(xiě)入的本地文件,推薦使用更可靠的TaildirSource(Flume1.7+
引入)。它結(jié)合了SpoolingDirectory的高可靠性和Exec的實(shí)時(shí)跟隨能力,支持?jǐn)帱c(diǎn)續(xù)傳
和通配符監(jiān)控多個(gè)文件。
-對(duì)于跨節(jié)點(diǎn)傳輸,AvroSource+AvroSink是標(biāo)準(zhǔn)、可靠的方案。
-對(duì)于離線批量采集已經(jīng)完稿的靜態(tài)日志文件,SpoolingDirectorySource非常適
合。
【項(xiàng)目4:使用Sqoop進(jìn)行數(shù)據(jù)遷移】
1.問(wèn)答題
請(qǐng)簡(jiǎn)述如下參數(shù)的含義?
參數(shù)含義
—table導(dǎo)出的源表表名
—columns從表中導(dǎo)出指定的列數(shù)據(jù)
-where指定導(dǎo)出時(shí)所使用的查詢條件
-target-dir上傳到hdfs的目錄
-dclctc-targct-dir如果指定目錄存在,則先刪除掉
—fields-terminated-by數(shù)據(jù)導(dǎo)入hdfs中需要的分隔符
-num-mappers指明sqoop任務(wù)的mapper個(gè)數(shù)
—split-by設(shè)置按照哪個(gè)列去分割數(shù)據(jù),如果mappers個(gè)數(shù)為1就
沒(méi)必要傳split-by參數(shù)
-compress表明輸出的文件需要壓縮
-compression-codec聲明壓縮格式
-null-string是string類(lèi)型的字段,當(dāng)Value是NULL,替換成指定
的字符
—null-non-string是非string類(lèi)型的字段,當(dāng)Value是NULL,替換成指
定字符
2.操作題
(1)準(zhǔn)備數(shù)據(jù)
在tesi數(shù)據(jù)庫(kù)中創(chuàng)建如下數(shù)據(jù)表
CREATETABLE'st_info'(
'id'int(10)DEFAULTNULL,
'name'varchar(50)DEFAULTNULL,
'school'varchar(lO)DEFAULTNULL,
'agesint(10)DEFAULTNULL,
'high'varchar(lO)DEFAULTNULL
)ENGINE=InnoDBDEFAULTCHARSET=latinl;
并在數(shù)據(jù)中插入如下數(shù)據(jù)。
INSERTINTO'stjnfo'VALUES('2023040l\'HarryPotter?Hogwarts'J8'」68');
INSERTINTO'st_info'VALUES('20230402';HermioneGranger','Hogwarts';17:160');
INSERTINTO'stjnfo'VALUES('20230403,:AlbusDumbledore'/Hogwarts';1507178t);
INSERTINTO'stjnfo'VALUES('20230404,;SeverusSnape':Hogwarts':50,;175');
INSERTINTO'st_infoxVALUES('20230405','RubcusHagrid','Hogwarts','50','260');
(2)請(qǐng)使用sqccp把數(shù)據(jù)全量導(dǎo)入到HDFS的人SQL2HDESI目錄下,要求使用一個(gè)map
sqoopimport\
—connectjdbc:mysql://inaster:3306/test?useSSL=false\
—usernameroot\
—password123456\
-delete-target-dir\
-target-dir/SQL2HDFS1\
—tablest_infd\
-fields-terminated-byV\
-num-mappers1
(3)請(qǐng)使用sqoop把部分?jǐn)?shù)據(jù)導(dǎo)入到HDFS的/SQL2HDFS2目錄下,要求使用where指
定age=50的條件杳詢,要求使用一個(gè)m叩。
sqoopimport\
—connectjdbc:mysql://master:3306/test?useSSL=false\
-usernameroot\
—password123456\
-where"age=50"\
—dclcte-targct-dir\
-targel-dir/SQL2HDFS2\
-tablest_info\
—fields-terminated-by'\t'\
-num-mappers1
(4)請(qǐng)使用sqoop把部分?jǐn)?shù)據(jù)導(dǎo)入到HDFS的/SQL2HDFS3目錄下,要求使用querysql
語(yǔ)句杳詢,導(dǎo)入的字段為,age,杳詢條件為age>17,要求使用兩個(gè)map,以id字段進(jìn)
行劃分。
sqoopimport\
-connectjdbc:mysql://master:3306/tesl?useSSL=false\
-usernameroot\
—password123456\
-delete-target-dir\
-target-dir/SQL2HDFS3\
--query'selectid,name,agefromst_infoWHEREage>17and$CONDITIONS'\
—split-byid\
-fields-terminated-by%'\
-num-mappers2
(5)請(qǐng)使用sqoop把數(shù)據(jù)全量導(dǎo)入到Hive的demo數(shù)據(jù)庫(kù)下,要求使用一個(gè)map
sqoopimport\
-connectjdbc:mysql://master:3306/test?useSSL=false\
—usernameroot\
-password123456\
—tablest_info\
-hive-import\
-num-mappers1\
-hive-databasedemo
【項(xiàng)目5:數(shù)據(jù)預(yù)處理實(shí)踐】
1、填空題
(1)Kettle中有兩種腳本文件:Transformalion和Job0其中,Transformaliou用于完
成針對(duì)數(shù)據(jù)的基礎(chǔ)轉(zhuǎn)換,而她用于完成整個(gè)工作流的控制。
(2)Kettle主要有4人組件組成,分別為:Spoon、Pan、Kitchen和Carte組件。
(3)隨機(jī)采樣是一種常用的數(shù)據(jù)采樣方法,它通過(guò)隨機(jī)選擇數(shù)據(jù)集中的樣本又構(gòu)建樣
本數(shù)據(jù)。在Python中,可以使用random模塊提供的sample函數(shù)來(lái)實(shí)現(xiàn)隨機(jī)采樣。
(4)在Pandas中,有兩種常用的數(shù)據(jù)合并方式:concat與merge。
(5)數(shù)據(jù)重塑是指轉(zhuǎn)換數(shù)據(jù)組織成行和列的方式。Pandas為用戶提供了多種數(shù)據(jù)重
塑的方法,常用的有Divot函數(shù)和melt函數(shù)。
(6)melt函數(shù)如下所示。
pandas.melt(frame,id_vars=None,value_vars=None,var_name=None,value_name='value',
col_level=None)
其中參數(shù)frame用于指定要轉(zhuǎn)換的DataFrame,參數(shù)id_vars用于指定要保留的列,不進(jìn)行
轉(zhuǎn)換的列,參數(shù)vakie_vars用于指定要轉(zhuǎn)換的列,參數(shù)vajname用于指定生成的新列的名
限
(7)數(shù)據(jù)離散化的目的是為了簡(jiǎn)化數(shù)據(jù)結(jié)構(gòu)。連續(xù)屬性的離散化就是將連續(xù)屬性的值
域劃分為若干個(gè)離散的區(qū)間,最后用不同的符號(hào)或整數(shù)值代表落在每個(gè)子區(qū)間中的屬
性值,離散化方法經(jīng)常作為數(shù)據(jù)挖掘的工具。常用的函數(shù)使用有cut函數(shù)、qcut函數(shù)
實(shí)現(xiàn)數(shù)據(jù)的區(qū)間分組轉(zhuǎn)換。
(8)啞變量轉(zhuǎn)換是一種將多分類(lèi)變量轉(zhuǎn)換為二分變量的一種方法。Pandas中的
gejdummies函數(shù)可以實(shí)現(xiàn)數(shù)據(jù)的啞變量矩陣轉(zhuǎn)換。
(9)特征工程是利用數(shù)據(jù)領(lǐng)域的相關(guān)知識(shí)來(lái)創(chuàng)建能夠使機(jī)器學(xué)習(xí)算法達(dá)到最佳性能的
特征的過(guò)程。特征處理主要有三個(gè)方法:特征構(gòu)建、特征抽取、特征選擇。
(10)jieba是百度工程師SunJunyi開(kāi)發(fā)的一個(gè)開(kāi)源庫(kù),jieba最流行的應(yīng)用是分詞、關(guān)
鍵詞抽取、詞頻統(tǒng)計(jì)等,是優(yōu)秀的中文分詞第三方庫(kù)。jieba支持四種分詞模式:精確模式、
搜索引擎模式、全模式、paddle模式。
(11)jieba中的常用函數(shù)jieba.load_userdict(dict_path)的功能是添力口詞典,dictpath為
文件類(lèi)對(duì)象或自定義詞典的路徑;jiciba.add_\vord(word)的功能是向分詞詞典中增加新詞
word;jieba.analyse.extract_tags(sentence,topK=20,withWeight二False,aHowPOS=())的功能是
使用TF-IDF算法從句子中提取關(guān)鍵詞;iieba.analyse.s?t_stop_words(file_name)的功能是關(guān)
鍵詞提取所使用停止詞(StopWords)文本語(yǔ)料庫(kù)可以切換成自定義語(yǔ)料庫(kù)的路徑,
filename為自定義語(yǔ)料庫(kù)的路徑。
(12)基于統(tǒng)計(jì)的分詞方法所應(yīng)用的主要統(tǒng)計(jì)模型有:隱馬爾可夫模型(HidcnMarkov
Model,HMM)、最大熠模型(ME)、條件隨機(jī)場(chǎng)模型(ConditionalRandomFields,CRF)
等。
(13)在NLTK中的pos」aN函數(shù)用于進(jìn)行詞性的標(biāo)注。jieba默認(rèn)詞性標(biāo)注集
(Python37\Lib\site-packages\jieba\dict.txt),可以使用makusureuserdicl」oaded函數(shù)將自定
義的詞匯加入標(biāo)注集中。
(14)關(guān)鍵詞是能夠表達(dá)文檔中心內(nèi)容的詞語(yǔ),從算法的角度來(lái)看,關(guān)鍵詞提取算法主
要有兩類(lèi):無(wú)監(jiān)督關(guān)鍵詞提取方法和有監(jiān)督關(guān)鍵詞提取方法。
(15)詞形規(guī)范化過(guò)程主要包括兩種:詞干提取和詞形還原,對(duì)于詞干提取來(lái)說(shuō),
nltk.stcm模塊中提供了多種詞干提取器,目前最受歡迎的就是波特詞干提取器和蘭卡斯特
詞干提取器。nltk.stem模塊中,WordNet提供了非常好用的詞形還原的函數(shù)。
2、操作題
任務(wù)一:使用kett加進(jìn)行數(shù)據(jù)清洗。
(1)創(chuàng)建一個(gè)新的轉(zhuǎn)換“旅游信息數(shù)據(jù)預(yù)處理”。將創(chuàng)建過(guò)程截圖。
ES另存為x
,▼個(gè)一"Win_>pdi-ce...vCSpdi-ce--342中搜...P
文件名(N):v|
保存類(lèi)型(T):Kettletransformations
“瀏覽文件夾(B)冉肖
(2)創(chuàng)建DB連接,創(chuàng)建一個(gè)planedemo數(shù)據(jù)庫(kù)連接〔使用mysql中的planedemo數(shù)據(jù)庫(kù)
的trip表),將連接創(chuàng)建的設(shè)置截圖。
Ml
pUncdrmofilWArt
連接他
王秋名行
NtftrveMocdrhn
Neoview
Netrzza
OpenERPSefvef
Of?le
OfMleRDB
PdioMOLAPSewf
PenSoDeUServke$
P5tgrKQ(
Kecnhin
RemecJyActionRequestSystem
逐
■IXeQwHStreamingCunor
履唐
(3)創(chuàng)建一個(gè)表輸入,將其設(shè)置截圖。
里表蝙入§數(shù)寤庫(kù)瀏覽器
步器名際表輸入O%動(dòng)作?
數(shù)據(jù)庫(kù)連接planedemoK據(jù)庫(kù)連婁蟀g...新建…Wizard-Sauthuseruserpermissions
Bdjangoadminjog
SQI荻取SQL查詢語(yǔ)句-
3djangocontenttype
SZLECT?0節(jié)
FR詠tripBdjangomigrations
Sdjangosession
■?
fflinfo
行1殉)寸trip
允許簿易徒換□tripl
替授SQL語(yǔ)句里的變..」
Htriptest
從步要插入轆■beijingbusinfo
Ssysconfig
數(shù)制10001Bpeople
?Help確定(O)ffi£(P)取消(C)確定取消
(4)拆分酒店字段,將酒店字段按照空格作為分隔符進(jìn)行字段拆分為“酒店”、“類(lèi)型”
和評(píng)分字段,并將創(chuàng)建設(shè)置截圖。
25拆分字段-OX
步驟名稱(chēng)拆分酒店字段
需要拆分的字段酒店
分偈符。
字段
?新的字段ID^?ID?類(lèi)型mft格式分組符號(hào)小數(shù)點(diǎn)出斐不符號(hào)Nullif缺省去除空格類(lèi)型
1酒店NString不去抽空格
2類(lèi)型NString不去掉空格
3部分NString不去短空格
I?Help確逵(O)取消(C)
(5)使用正則表達(dá)將類(lèi)型字段中的“3.9分/5分”樣式的內(nèi)容替換為“舒適型”,并將創(chuàng)建
設(shè)置圖片截圖。
字符串日慢-□X
MM1WM________________________________________________________
字段
?修入澹字段檢出范例使用正史表達(dá)式授案便用…替修設(shè)置為仝串?使用領(lǐng)HBH修整個(gè)單詞匹配大小司?圈KUnicode
||1JISA\dWAd?t?9fiBBS
?Help?fe(O)Cl取才段(G)取冰。
L--------——1...........'t■..................J'j
(6)將數(shù)據(jù)中的“評(píng)分”字段中的“null”俏替換為“4.0”,并將設(shè)置講行截圖。
"替換NULL值一0X
作業(yè)名稱(chēng)替換NULUfi
替換所有字段的null值
佰音濱為。
設(shè)置空卻出二)
曬(日題1一▼
選擇字段,
選!到自類(lèi)型口
值姥1
T類(lèi)型值替換為轉(zhuǎn)換掩碼(日期)設(shè)置空字符串
字段
#字段值音換為轉(zhuǎn)換掩碼(日期)設(shè)置空字符串
1評(píng)分4.0否
?Help頻(O)要取字段取消(C)
(7)將“評(píng)分”字段的數(shù)據(jù)由“4.7分/5分”樣式經(jīng)過(guò)剪切字符串截取為“4.7”樣式,并
將設(shè)置截圖。
y剪切:字符串-□X
步驟名稱(chēng)E■現(xiàn)切字符串
要剪切的二字段
#輸入力元字段輸出流字段起始位置結(jié)束位置
1評(píng)分處理后的評(píng)分03
?Help確定(0)獲取字段(G)取消(C)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年貴陽(yáng)市白云區(qū)政務(wù)服務(wù)中心(綜合窗口)人員招聘考試備考試題
- 2026年六月售后服務(wù)改進(jìn)方案
- 2026年人教版四年級(jí)數(shù)學(xué)下冊(cè)期末綜合測(cè)試卷(含答案)
- 2026年初中歷史綜合專(zhuān)項(xiàng)訓(xùn)練試卷
- 六年級(jí)下冊(cè)數(shù)學(xué)北師大含答案 比例尺1
- 醫(yī)院食堂工作總結(jié)2篇
- 電力企業(yè)員工思想動(dòng)態(tài)調(diào)研報(bào)告(3篇)
- 禮儀師考試真題及答案解析
- 五年級(jí)下冊(cè)數(shù)學(xué)北師大含答案 分?jǐn)?shù)乘法(二)1
- 2026年酒莊品酒之旅
- 宮頸環(huán)扎護(hù)理查房課件
- 2026年高考英語(yǔ)專(zhuān)項(xiàng)復(fù)習(xí):必背近10高考英語(yǔ)高頻詞匯表
- 糞污消納協(xié)議書(shū)
- 制造業(yè)產(chǎn)品質(zhì)量保障體系及控制措施
- 生物制藥行業(yè)安全培訓(xùn)課件
- 數(shù)控機(jī)床裝調(diào)維修工綜合知識(shí)理論考試題庫(kù)
- 布魯菌病課件
- (正式版)QC∕T 1207-2024 燃料電池發(fā)動(dòng)機(jī)用空氣壓縮機(jī)
- JT-T-216-2020客車(chē)空調(diào)系統(tǒng)技術(shù)條件
- 廉潔應(yīng)征承諾書(shū)
- 《抹灰工程》課件
評(píng)論
0/150
提交評(píng)論