Example 1: providing the mapping function using a SimpleFunction
PCollection<String> lines = Create.of("Hello World", "Beam is fun"); PCollection<Integer> lineLengths = lines.apply(MapElements.via( new SimpleFunction<String, Integer>() { @Override public Integer apply(String line) { return line.length(); } });
Example 2: providing the mapping function using a SerializableFunction
, which allows the use of Java 8 lambdas. Due to type erasure, you need to provide a hint indicating the desired return type.
PCollection<String> lines = Create.of("Hello World", "Beam is fun"); PCollection<Integer> lineLengths = lines.apply(MapElements .into(TypeDescriptors.integers()) .via((String line) -> line.length()));
Map
, but for each input it may produce zero or more outputs.