![](/img/trans.png)
[英]sbt assembly cannot create jar getting java.lang.UnsupportedOperationException
[英]Flink: java.lang.UnsupportedOperationException: Cannot override partitioning for KeyedStream
我在運行我的小型 flink 程序時遇到以下異常。 該應用程序有兩個來自同一模擬源的數據流。 它有一個廣播state。 我寫這個是為了做一些性能測試,但給了我例外
Caused by: java.lang.UnsupportedOperationException: Cannot override partitioning for KeyedStream.
at org.apache.flink.streaming.api.datastream.KeyedStream.setConnectionType(KeyedStream.java:251)
at org.apache.flink.streaming.api.datastream.DataStream.broadcast(DataStream.java:429)
at org.apache.flink.streaming.api.scala.DataStream.broadcast(DataStream.scala:495)
我的代碼:
val testStream: DataStream[Tuple2[String, String]] = env
.addSource(
new MockKafkaSource
)
.filter(x => !x._1.equals("x"))
.map(x => x)
.uid("test stream 1")
val testStream2: DataStream[Tuple2[String, String]] = env
.addSource(
new MockKafkaSource
)
.map(x => x)
.keyBy(x => x._1)
.uid("test stream 2")
lazy val testStateDescriptor =
new MapStateDescriptor("testState", classOf[String], classOf[Tuple2[String, String]])
val testBroadcastStream = testStream.broadcast(testStateDescriptor)
val broadcastOutStream: DataStream[Tuple2[String, String]] =
testStream2
.connect(testBroadcastStream)
.process(new StateProcess)
broadcastOutStream.print()
這一行發生的異常:
val testBroadcastStream = testStream.broadcast(testStateDescriptor)
我的問題是我正在為testStream2
調用鍵控 stream 上的uid
方法。 我不得不將uid
移動到 map 之后,然后鍵入 stream。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.