
17
2.4 スタンドアローンのアプリケーション
def hasPython(line):
return "Python" in line
pythonLines = lines.filter(hasPython)
関数を Spark に渡すことは Java でもできますが、この場合はクラスとして定義をしたうえで、
Function
というインターフェイスを実装します。例をご覧いただきましょう。
JavaRDD<String> pythonLines = lines.filter(
new Function<String, Boolean>() {
Boolean call(String line) { return line.contains("Python"); }
}
);
Java 8 では、Python や Scala の場合に似た、ムというショートカット構文が導入されました。
これを使った場合のコードは、次のようになります。
JavaRDD<String> pythonLines = lines.filter(line -> line.contains("Python"));
関数の渡し方については、「3.4 Spark への関数の渡し方」でさらに議論します。
Spark API
は、後ほどさらに詳しく取り上げますが、
Spark
の魔法の多くは、
filter
のような
関数ベースの操作もまた、ことにあります。すなわち、
Spark
は自
動的に関数を選択し(例えば
line.contains("Python") ...