Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 映射代码以从日志文件的每一行中筛选出某些字段_Java_Regex_Hadoop - Fatal编程技术网

Java 映射代码以从日志文件的每一行中筛选出某些字段

Java 映射代码以从日志文件的每一行中筛选出某些字段,java,regex,hadoop,Java,Regex,Hadoop,下面是我的java映射代码,用于hadoop从日志文件的每一行中过滤出某些字段 public class TAnalyser { public static class TMapper extends Mapper<Object, Text, Text, IntWritable>{ public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> ou

下面是我的java映射代码,用于hadoop从日志文件的每一行中过滤出某些字段

public class TAnalyser {

public static class TMapper 
   extends Mapper<Object, Text, Text, IntWritable>{      
public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable>   output, Reporter reporter) throws IOException,InterruptedException {

String LogEntryPattern=("(srcip=(?:\\\\d+\\\\.)+\\\\d+)(?:.*)?(dstip=(?:\\\\d+\\\\.)+\\\\d+)(?:.*)?(dstport=(\\\\d+))(?:.*)?(status=\\\\w(?:.*))");
String LogEntryLine=value.toString();
Pattern p=Pattern.compile(LogEntryPattern); 
Matcher matcher = p.matcher(LogEntryLine);

System.out.print(" " + matcher.group(1) + " " );
    System.out.print(" " + matcher.group(2) + " " );
System.out.print("status=close" + matcher.group(4) + " " );
System.out.println(" " + matcher.group(3));
}
}
}
公共类事务分析器{
公共静态类TMapper
扩展映射程序{
公共void映射(LongWritable键、文本值、OutputCollector输出、Reporter报告器)抛出IOException、InterruptedException{
字符串LogEntryPattern=(“(srcip=(?:\\\\d++\\\\\)++\\\\d+(:*)(dstip=(?:\\\\d++\\\\)++\\\\d+(:*)(dsport=(\\\\\d+)(?:*)(状态=\\\w(?:*));
字符串LogEntryLine=value.toString();
模式p=Pattern.compile(LogEntryPattern);
Matcher-Matcher=p.Matcher(对数线);
系统输出打印(“+matcher.group(1)+”);
System.out.print(“+matcher.group(2)+”);
系统输出打印(“状态=关闭”+匹配器组(4)+”);
System.out.println(“+matcher.group(3));
}
}
}
下面是一个示例输入文件inp.txt

201410.100.2.3date=2014-01-16,time=11:26:14,devname=B39001569,devid=B39001569,logid=000013,type=traffic,srcip=192.168.192.12,srcport=22,srcintf=port2,dstip=10.180.1.10,dstport=3106,dstintf=port1,sessionid=121543,status=close,policyid=196,service=MYSQL,proto=6,duration=10,sentpktbyte=3910,rcbyte=175085,vdpkt=132”

201410.100.2.3date=2014-01-16,time=11:26:14,devname=B39001569,devid=B39001569,logid=000013,type=traffic,srcip=192.168.192.13,srcport=209,srcintf=port2,dstip=10.180.1.15,dstport=206,dstintf=port1,sessionid=123,status=warning,policyid=196,service=MYSQL,proto=6,duration=10,sentbyte=3910,rcvdbyte=175085,sentpkt=132,rcvdt“

我已经给出了正则表达式,将输入作为字符串,编译并匹配了模式。但我需要过滤掉并只打印那些在状态字段中包含“警告”的行

在hadoop中运行此文件时,会显示以下错误

线程“main”java.lang.NoSuchMethodException中的异常:tanalyser.tanalyser.main([Ljava.lang.String;) 位于java.lang.Class.getMethod(Class.java:1655) 位于org.apache.hadoop.util.RunJar.main(RunJar.java:154)


我被它卡住了。任何建议都会非常有用。谢谢。

你能检查一下你的代码中的静态类声明吗

公共静态类TMapper 扩展映射器{


似乎不对。你能把它放在一个单独的类中,而不是放在一个内部类中,看看这是否有帮助吗?

你能发布整个错误日志吗?