反汇编Java代码
阅读ApacheCrunch示例,该示例主要是Java,对两者都是新手。(我知道.NET) 下面是示例代码:反汇编Java代码,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,阅读ApacheCrunch示例,该示例主要是Java,对两者都是新手。(我知道.NET) 下面是示例代码: DoFn<String, Pair<String, Long>> extractIPResponseSize = new DoFn<String, Pair<String, Long>>() { transient Pattern pattern; public void initialize() { pattern = P
DoFn<String, Pair<String, Long>> extractIPResponseSize = new DoFn<String, Pair<String, Long>>() {
transient Pattern pattern;
public void initialize() {
pattern = Pattern.compile(logRegex);
}
public void process(String line, Emitter<Pair<String, Long>> emitter) {
Matcher matcher = pattern.matcher(line);
if(matcher.matches()) {
try {
Long responseSize = Long.parseLong(matcher.group(7));
String remoteAddr = matcher.group(1);
emitter.emit(Pair.of(remoteAddr, responseSize));
} catch (NumberFormatException e) {
// corrupt line, we should increment a counter
}
}
}
};
DoFn extractIPResponseSize=new DoFn(){
瞬态模式;
公共无效初始化(){
pattern=pattern.compile(logRegex);
}
公共无效过程(字符串行、发射器){
匹配器匹配器=模式匹配器(线);
if(matcher.matches()){
试一试{
Long responseSize=Long.parseLong(matcher.group(7));
字符串remoteAddr=matcher.group(1);
emit(一对(remoteAddr,responseSize));
}捕获(数字格式){
//损坏的线路,我们应该增加一个计数器
}
}
}
};
第一行让我很困惑,我听不懂,你能逐一解释一下吗?
注意:DoFn
是Apache Crunch中的一个类,下面是相关文档:
我也做了一些谷歌搜索,看起来这里的Pair
也是Apache常见的语言:
也许我需要理解的是Java泛型?
DoFn
是一个泛型类。也就是说,它的每个实例都包含类型参数。类型参数在方法中使用,但由编译器用Object
引用替换。有关泛型的更多信息,请参阅
至于那一行后面的大括号,这是一个微妙的提醒,这实际上是一个正在声明的内部类。它是
DoFn
的匿名子类,覆盖initialize
和process
方法。有关内部类的更多信息,请参阅。您需要了解泛型。