@Override public PDone expand(PCollection<KV<KV<String, String>, Long>> similarPairs) { return similarPairs .apply(Sum.<KV<String, String>>longsPerKey()) .apply(Combine.globally(TO_LIST)) .apply("PCoAAnalysis", ParDo.of(new PCoAnalysis(dataIndices))) .apply("FormatGraphData", ParDo .of(new DoFn<Iterable<PCoAnalysis.GraphResult>, String>() { @ProcessElement public void processElement(ProcessContext c) throws Exception { Iterable<PCoAnalysis.GraphResult> graphResults = c.element(); for (PCoAnalysis.GraphResult result : graphResults) { c.output(result.toString()); } } })) .apply("WriteCounts", TextIO.write().to(outputFile)); } }
@Override public PDone expand(PCollection<KV<KV<String, String>, Long>> similarPairs) { return similarPairs .apply(Sum.<KV<String, String>>longsPerKey()) .apply(Combine.globally(TO_LIST)) .apply("PCoAAnalysis", ParDo.of(new PCoAnalysis(dataIndices))) .apply("FormatGraphData", ParDo .of(new DoFn<Iterable<PCoAnalysis.GraphResult>, String>() { @ProcessElement public void processElement(ProcessContext c) throws Exception { Iterable<PCoAnalysis.GraphResult> graphResults = c.element(); for (PCoAnalysis.GraphResult result : graphResults) { c.output(result.toString()); } } })) .apply("WriteCounts", TextIO.write().to(outputFile)); } }
.apply(Sum.longsPerKey()) .apply(MapElements.<KV<String, Long>, String>via(new SimpleFunction<KV<String, Long>, String>() { @Override
.apply(Sum.longsPerKey()) .apply(MapElements.<KV<String, Long>, String>via(new SimpleFunction<KV<String, Long>, String>() { @Override
@Test public void testSumGetNames() { assertEquals("Combine.globally(SumInteger)", Sum.integersGlobally().getName()); assertEquals("Combine.globally(SumDouble)", Sum.doublesGlobally().getName()); assertEquals("Combine.globally(SumLong)", Sum.longsGlobally().getName()); assertEquals("Combine.perKey(SumInteger)", Sum.integersPerKey().getName()); assertEquals("Combine.perKey(SumDouble)", Sum.doublesPerKey().getName()); assertEquals("Combine.perKey(SumLong)", Sum.longsPerKey().getName()); }
TypeDescriptors.kvs(TypeDescriptors.strings(), TypeDescriptors.longs())) .via(v -> KV.of("key", v))) .apply(Sum.longsPerKey());