

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 應用程式升級的注意事項和已知問題
<a name="precautions"></a>

## 代理程式重新啟動後，Kafka 遞交檢查點會重複失敗
<a name="apache-kafka-connector"></a>

Flink 1.15 版中的 Apache Kafka 連接器存在已知的開放原始碼 Apache Flink 問題，原因在於 Kafka 用戶端 2.8.1 中的重大開放原始碼 Kafka 用戶端錯誤。如需詳細資訊，請參閱在[代理程式重新啟動後，Kafka 遞交檢查點會重複失敗，](https://issues.apache.org/jira/browse/FLINK-28060)且在 [ commitOffsetAsync 例外狀況之後，KafkaConsumer 無法復原與群組協調器的連線](https://issues.apache.org/jira/browse/KAFKA-13840)。

為了避免此問題，建議您在 Amazon Managed Service for Apache Flink 中使用 Apache Flink 1.18 或更新版本。

## 狀態相容性的已知限制
<a name="state-precautions"></a>
+ 如果您使用的是資料表 API，Apache Flink 不保證 Flink 版本之間的狀態相容性。如需詳細資訊，請參閱 Apache Flink 文件中的[狀態升級和演變](https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/concepts/overview/#stateful-upgrades-and-evolution)。
+ Flink 1.6 狀態與 Flink 1.18 不相容。如果您嘗試使用 狀態從 1.6 升級到 1.18 及更新版本，API 會拒絕您的請求。您可以升級至 1.8、1.11、1.13 和 1.15，並拍攝快照，然後升級至 1.18 和更新版本。如需詳細資訊，請參閱 Apache [Flink 文件中的升級應用程式和 Flink 版本](https://nightlies.apache.org/flink/flink-docs-master/docs/ops/upgrading/)。

## Flink Kinesis 連接器的已知問題
<a name="kinesis-connector-precautions"></a>
+ 如果您使用的是 Flink 1.11 或更早版本，並使用`amazon-kinesis-connector-flink`連接器進行Enhanced-fan-out(EFO) 支援，則必須採取額外的步驟，將狀態升級到 Flink 1.13 或更新版本。這是因為連接器套件名稱的變更。如需詳細資訊，請參閱 [amazon-kinesis-connector-flink](https://github.com/awslabs/amazon-kinesis-connector-flink)。

  Flink 1.11 和更早版本的`amazon-kinesis-connector-flink`連接器使用封裝 `software.amazon.kinesis`，而 Flink 1.13 和更新版本的 Kinesis 連接器使用 。 `org.apache.flink.streaming.connectors.kinesis`使用此工具來支援遷移：[amazon-kinesis-connector-flink-state-migrator](https://github.com/awslabs/amazon-kinesis-connector-flink-state-migrator)。
+ 如果您使用 Flink 1.13 或更早版本搭配 `FlinkKinesisProducer` 並升級至 Flink 1.15 或更新版本，若要有狀態升級，您必須繼續`FlinkKinesisProducer`在 Flink 1.15 或更新版本中使用 ，而非較新的 。 `KinesisStreamsSink`不過，如果您的接收器上已有自訂`uid`設定，您應該可以切換到 ，`KinesisStreamsSink`因為 `FlinkKinesisProducer`不會保持狀態。Flink 會將其視為相同的運算子，因為`uid`已設定自訂。

## 以 Scala 撰寫的 Flink 應用程式
<a name="scala-precautions"></a>
+ 從 Flink 1.15 開始，Apache Flink 在執行時間中不包含 Scala。升級至 Flink 1.15 或更新版本時，您必須在程式碼 JAR/zip 中包含要使用的 Scala 版本和其他 Scala 相依性。如需詳細資訊，請參閱 [Amazon Managed Service for Apache Flink 1.15.2 版](https://docs.aws.amazon.com/managed-flink/latest/java/flink-1-15-2.html)。
+ 如果您的應用程式使用 Scala，而且您要從 Flink 1.11 或更早版本 (Scala 2.11) 升級至 Flink 1.13 (Scala 2.12)，請確定您的程式碼使用 Scala 2.12。否則，您的 Flink 1.13 應用程式可能無法在 Flink 1.13 執行時間中找到 Scala 2.11 類別。

## 降級 Flink 應用程式時應考量的事項
<a name="downgrading-precautions"></a>
+ 可以降級 Flink 應用程式，但僅限於應用程式之前使用舊版 Flink 執行的情況。對於狀態升級，Managed Service for Apache Flink 需要使用使用相符或更舊版本的快照進行降級
+ 如果您要將執行時間從 Flink 1.13 或更新版本更新為 Flink 1.11 或更新版本，而且如果您的應用程式使用 HashMap 狀態後端，您的應用程式將會持續失敗。