Spout的實現過程:
· 對文件的改變進行分開的監聽,并監視目錄下有無新日志文件添加。
· 在數據得到了字段的說明后,將其轉換成tuple。
· 聲明Spout和Bolt之間的分組,并決定tuple發送給Bolt的途徑。
Spout的具體編碼在Listing Three中顯示。
Listing Three:Spout中open、nextTuple和delcareOutputFields方法的邏輯。
1.public void open( Map conf, TopologyContext context,SpoutOutputCollector collector )
2.{
3. _collector = collector;
4. try
5. {
6. fileReader=new BufferedReader(new FileReader(new File(file)));
7. }
8. catch (FileNotFoundException e)
9. {
10. System.exit(1);
11. }
12. }
13.
14. public void nextTuple()
15. {
16. protected void ListenFile(File file)
17. {
18. Utils.sleep(2000);
19. RandomAccessFile access = null;
20. String line = null;
21. try
22. {
23. while ((line = access.readLine()) != null)
24. {
25. if (line !=null)
26. {
27. String[] fields=null;
28. if (tupleInfo.getDelimiter().equals("|"))fields = line.split("\\"+tupleInfo.getDelimiter());
29. else
30. fields = line.split(tupleInfo.getDelimiter());
31. if (tupleInfo.getFieldList().size() == fields.length)_collector.emit(new Values(fields));
32. }
33. }
34. }
35. catch (IOException ex){ }
36. }
37. }
38.
39. public void declareOutputFields(OutputFieldsDeclarer declarer)
40. {
41. String[] fieldsArr = new String [tupleInfo.getFieldList().size()];
42. for(int i=0; i<tupleInfo.getFieldList().size(); i++)
43. {
44. fieldsArr= tupleInfo.getFieldList().get(i).getColumnName();
45. }
46. declarer.declare(new Fields(fieldsArr));
47. }
declareOutputFileds()決定了tuple發射的格式,這樣的話Bolt就可以用類似的方法將tuple譯碼。Spout持續對日志文件的數據的變更進行監聽,一旦有添加Spout就會進行讀入并且發送給Bolt進行處理。
到此,相信大家對“Spout的實現過程”有了更深的了解,不妨來實際操作一番吧!這里是本站網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
中行柜臺轉賬手續費柜臺現金按無折存現標準收費,按匯款額的1%收費。1元~50元;異地柜臺轉賬1%,5元~50元;異地跨行轉賬,按轉賬金額不同收費。其中,1萬元以下收5.5元,1萬~10萬收10.5元,10萬~50萬收15.5元;50萬~100萬收20.5元;100萬元以上按匯款額的萬分之六收取,上限200元。中行網上銀行轉賬手續費中行內同省轉賬:免費;中行內跨省人民幣實時轉賬(銀行卡與存折間轉賬)...
(資料圖)昨日央行開展4000億元中期借貸便利(MLF)操作和20億元公開市場逆回購操作,中標利率均下降10個基點,分別降至2.75%、2.00%。2022年8月MLF下調LPR利率會跟著降嗎?相關人士表示:8月MLF利率下調,意味著當月LPR報價的定價基礎發生變化,加之近期銀行資金成本也在較快下行,8月LPR報價下降概率大,考慮到近期房貸市場向貸款方傾斜,不排除5年期以上LPR報價下降幅度超過1...
山東金礦在萊州和招遠市。萊州是我國重要的黃金生基地,在世界范圍內也是罕見的金礦富集區。萊州已探明的黃金儲達2000多噸,是名副其實的中國黃金儲量第一市。山東招遠市的黃金資源遍布全境,藏量豐富,招遠焦家金礦是我國重要的一處金礦產地。山東金礦在哪個城市萊州市已探明100噸以上的特大型金礦產地有3個,即萊州市朱郭李家礦區金礦、萊州市焦家深部礦區金礦、萊州市新立村礦區深部與外圍金礦。山東招遠市的金礦主要集...