flink使用DataStreamUtils将DataStream的数据转成Iterator迭代器的数据(如数组、列表、集合等)

1.scala代码如下

import org.apache.flink.streaming.experimental.DataStreamUtils
import scala.collection.JavaConverters.asScalaIteratorConverter

val myResult: DataStream[(String, Int)] = ...
val myOutput: Iterator[(String, Int)] = DataStreamUtils.collect(myResult.javaStream).asScala

2.java代码如下

import org.apache.flink.streaming.experimental.DataStreamUtils

DataStream<Tuple2<String, Integer>> myResult = ...
Iterator<Tuple2<String, Integer>> myOutput = DataStreamUtils.collect(myResult)

这样就可以把DataStream转成Iterator了,其中Iterator是scala中Collection集合的最上层接口,可以通过如Iterator的toArray()、toList()等方法转成我们所需要的所有集合。

3.类型不匹配的问题
上面12点都是官方的代码,但是我们用scala写DataStream的时候都是用的org.apache.flink.streaming.api.scala.DataStream包,上述代码会出现类型不匹配的问题,所以要使用org.apache.flink.streaming.api.scala.DataStreamUtils包下的scala类

import org.apache.flink.streaming.api.scala.DataStreamUtils
val myOutput: Iterator[Center] = new DataStreamUtils(window).collect()

报错消失

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值