Почему поток данных не печатает преобразование? - PullRequest
0 голосов
/ 19 января 2019
List<Integer> lst = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
                .collect(Collectors.toList());
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<Integer> dataStream = env.fromCollection(lst);

dataStream.flatMap(new FlatMapFunction<Integer, Integer>() {

    @Override
    public void flatMap(Integer integer, Collector<Integer> collector) throws Exception {
        collector.collect(new Integer(integer.intValue() + 1));
    }
});

dataStream.print();
env.execute("Executing list");

Это заканчивается печатью:

10> 4
9> 3
8> 2
12> 6
11> 5
4> 10
1> 7
2> 8
3> 9
7> 1

Я предполагаю, что я ошибаюсь где-то в функции FlatMap или где-то в печати.Я пытался отобразить это так, чтобы каждый элемент, потому что увеличился на 1.

Ответы [ 2 ]

0 голосов
/ 20 января 2019

dataStream.flatMap (...). Печать ()

не

dataStream.flatMap (...) dataStream.print ()

0 голосов
/ 19 января 2019

dataStream.flatMap(...) возвращает преобразованный поток, но не изменяет исходный dataStream. Вам нужно либо переписать это как

dataStream.flatMap(...).print();

или как

DataStream<Integer> transformed = dataStream.flatMap(...);
transformed.print();
...