簡體   English   中英

Flink:java.lang.UnsupportedOperationException:無法覆蓋 KeyedStream 的分區

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM