Skip to content

Commit 357b720

Browse files
authored
Merge pull request #38029 from Subramanya-Veeregowda/pico-wordcount-example
Added PicoWordCount example to java Examples
2 parents 5ee67c6 + 78b770b commit 357b720

2 files changed

Lines changed: 67 additions & 8 deletions

File tree

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
package org.apache.beam.examples;
19+
20+
import java.util.Arrays;
21+
import org.apache.beam.sdk.Pipeline;
22+
import org.apache.beam.sdk.io.TextIO;
23+
import org.apache.beam.sdk.transforms.Count;
24+
import org.apache.beam.sdk.transforms.Filter;
25+
import org.apache.beam.sdk.transforms.FlatMapElements;
26+
import org.apache.beam.sdk.transforms.MapElements;
27+
import org.apache.beam.sdk.values.KV;
28+
import org.apache.beam.sdk.values.TypeDescriptors;
29+
30+
/**
31+
* A minimal "pico" example of WordCount.
32+
*
33+
* <p>This is a simplified version of MinimalWordCount with fewer concepts.
34+
*/
35+
public class PicoWordCount {
36+
37+
public static void main(String[] args) {
38+
39+
Pipeline p = Pipeline.create();
40+
41+
p.apply("ReadLines", TextIO.read().from("input.txt"))
42+
.apply(
43+
"ExtractWords",
44+
FlatMapElements.into(TypeDescriptors.strings())
45+
.via((String line) -> Arrays.asList(line.split("\\W+"))))
46+
.apply("FilterEmptyWords", Filter.by((String word) -> !word.isEmpty()))
47+
.apply("CountWords", Count.perElement())
48+
.apply(
49+
"FormatResults",
50+
MapElements.into(TypeDescriptors.strings())
51+
.via((KV<String, Long> kv) -> kv.getKey() + ": " + kv.getValue()))
52+
.apply("WriteResults", TextIO.write().to("output"));
53+
54+
p.run().waitUntilFinish();
55+
}
56+
}

sdks/java/maven-archetypes/starter/src/main/resources/archetype-resources/src/main/java/StarterPipeline.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,19 @@ public static void main(String[] args) {
5151
PipelineOptionsFactory.fromArgs(args).withValidation().create());
5252

5353
p.apply(Create.of("Hello", "World"))
54-
.apply(MapElements.via(new SimpleFunction<String, String>() {
55-
@Override
56-
public String apply(String input) {
57-
return input.toUpperCase();
58-
}
59-
}))
54+
.apply(
55+
MapElements.via(
56+
new SimpleFunction<String, String>() {
57+
@Override
58+
public String apply(String input)
59+
{
60+
return input.toUpperCase();
61+
}
62+
}))
6063
.apply(ParDo.of(new DoFn<String, Void>() {
6164
@ProcessElement
62-
public void processElement(ProcessContext c) {
63-
LOG.info(c.element());
65+
public void processElement(@Element String element) {
66+
LOG.info(element);
6467
}
6568
}));
6669

0 commit comments

Comments
 (0)