ほとんどが Java であり、どちらも初めての Apache Crunch の例を読んでいます。(私は.NETを知っています)サンプルコードは次のとおりです。
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
は Apache Crunch のクラスであり、そのドキュメントは次のとおりです:
http://crunch.apache.org/apidocs/0.3.0/org/apache/crunch/DoFn.html
私もいくつかのグーグルを行いPair
ましたが、ここでもApacheの共通言語のように見えます:
http://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/tuple/ Pair.html
たぶん、私が理解する必要があるのはJavaジェネリックですか?