Cascading(一)之日志解析
生活随笔
收集整理的這篇文章主要介紹了
Cascading(一)之日志解析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
此例子為官網例子,所以直接上代碼:
1 package com.wyf.cascade; 2 3 import java.util.Properties; 4 5 import cascading.flow.Flow; 6 import cascading.flow.FlowConnector; 7 import cascading.operation.regex.RegexParser; 8 import cascading.pipe.Each; 9 import cascading.pipe.Pipe; 10 import cascading.scheme.TextLine; 11 import cascading.tap.Hfs; 12 import cascading.tap.Lfs; 13 import cascading.tap.Tap; 14 import cascading.tuple.Fields; 15 16 /** 17 * 日志解析 18 * 19 * @author: wyf 20 * @version: Jul 12, 2013 2:47:44 PM 21 */ 22 public class LogParser { 23 public static void main(String[] args) { 24 String inputPath = "/home/wyf/workspace/HadoopCascading/data/apache.200.txt"; 25 String outputPath = "/home/wyf/workspace/HadoopCascading/data/output"; 26 27 //從本地文件系統中創建源頭,默認TextLine規則聲明了兩個字段"offset"和“line” 28 Tap localLogTap = new Lfs(new TextLine(), inputPath); 29 30 //聲明從日志文件解析出來的字段名稱 31 Fields apacheFields = new Fields("ip", "time", "method", "event", "status", "size"); 32 33 // define the regular expression to parse the log file with 34 //設置解析規則 35 String apacheRegex = "^([^ ]*) +[^ ]* +[^ ]* +\\[([^]]*)\\] +\\\"([^ ]*) ([^ ]*) [^ ]*\\\" ([^ ]*) ([^ ]*).*$"; 36 37 //設置輸出組的順序 38 int[] allGroups = { 5, 6, 1, 2, 3, 4}; 39 40 // create the stream parser 41 //創建解析器 42 RegexParser parser = new RegexParser(apacheFields, apacheRegex, allGroups); 43 44 //創建管道元素,指定管道名稱為"parser", 輸入字段名為"line" 45 Pipe importPipe = new Each("parser", new Fields("line"), parser); 46 47 //創建輸出頭,默認TextLine輸出所有字段 48 Tap remoteLogTap = new Hfs(new TextLine(), outputPath); 49 50 //設置當前工作jar 51 Properties properties = new Properties(); 52 FlowConnector.setApplicationJarClass(properties, LogParser.class); 53 54 //把輸入源頭與輸出頭用管道鏈接 55 Flow parsedLogFlow = new FlowConnector(properties).connect(localLogTap, remoteLogTap, importPipe); 56 57 //啟動解析日志流 58 parsedLogFlow.start(); 59 60 //阻塞等待,直到任務完成 61 parsedLogFlow.complete(); 62 } 63 }例子理解:
cascading執行是以流程處理,先建立一個"起始節點"(localLogTap),在建立一個"終止節點"(remoteLogTap)(嚴格講這種說法不準確,在此例子中暫且這么說),然后在起始節點與終止節點間連"一條線"(importPipe),OK現在可以執行了
轉載于:https://www.cnblogs.com/geopanda/p/3186402.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Cascading(一)之日志解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL字符串截取函数
- 下一篇: iOS学习之iOS沙盒(sandbox)