flink使用DataStreamUtils將DataStream的數據轉成Iterator迭代器的數據(如數組、列表、集合等)

1.scala代碼以下java

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代碼以下apache

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()等方法轉成咱們所須要的全部集合。api

3.類型不匹配的問題
上面12點都是官方的代碼,可是咱們用scala寫DataStream的時候都是用的org.apache.flink.streaming.api.scala.DataStream包,上述代碼會出現類型不匹配的問題,因此要使用org.apache.flink.streaming.api.scala.DataStreamUtils包下的scala類scala

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

報錯消失code

相關文章
相關標籤/搜索