Apache Flink:地图与FlatMap

时间:2018-09-19 02:26:31

标签: apache-flink

在flink中,flatMap也可以发出一条记录。看来flatMap可以代替地图。有人可以告诉我这种情况的区别吗?谢谢。

3 个答案:

答案 0 :(得分:3)

如果您认为地图是多余的,那么您是正确的。 Flatmap可以完成地图所能做的一切,还有更多。

尽管如此,我还是在输入和输出之间存在严格的一对一对应的情况下使用map。这可以为读者提供明确的指示,例如,在任何情况下都不会出现错误或无效输入会导致操作无法产生输出记录的情况。

答案 1 :(得分:1)

使用map()也使lambda的使用变得容易。例如,要将Tuple2<Integer, String>转换为String,可以这样做。

.map(value -> value.f1)

答案 2 :(得分:0)

mapflatMap之间的主要区别是返回类型。 这两种方法都适用于DataStream和DataSet对象,并针对流或集合中的每个元素执行。

但是,map方法仅返回一个元素,而flatMap返回一个集合(可以容纳一个,一个或多个元素)。

  • map方法使用方法MapFunction接收接口O out map(I elem)的自变量。输入是一个元素,输出是一个对象。
  • flatMap方法使用方法FlatMapFunction接收接口void flatMap(I elem, Collector<O> out)的自变量。输入是元素,输出是对象的集合。