

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

# 資料扭曲
<a name="troubleshooting-data-skew"></a>

Flink 應用程式在叢集上分散式執行。為了橫向擴展到多個節點，Flink 使用了鍵控串流的概念，這實質上意味著某個串流的事件將依據特定索引鍵 (例如客戶 ID) 進行分割，然後 Flink 可以處理不同節點上的不同分割區。許多 Flink 運算子然後會根據這些分割區評估，例如[鍵控視窗](https://nightlies.apache.org/flink/flink-docs-stable/docs/dev/datastream/operators/windows/)、[處理函數](https://nightlies.apache.org/flink/flink-docs-stable/docs/dev/datastream/operators/process_function/)和[非同步 I/O](https://nightlies.apache.org/flink/flink-docs-stable/docs/dev/datastream/operators/asyncio/)。

選擇分割區索引鍵通常取決於業務邏輯。同時，許多最佳實務 (例如 [DynamoDB](https://aws.amazon.com/dynamodb/) 和 Spark) 同樣適用於 Flink，包括：
+ 確保分割區索引鍵的高基數
+ 避免分割區之間的事件量扭曲

 您可以比較 Flink 儀表板中接收/發送的子任務 (即同一運算子的多個執行個體) 的記錄數來識別分割區中是否存在扭曲。此外，Managed Service for Apache Flink 監控也可設定為公開子任務層級的 `numRecordsIn/Out` 和 `numRecordsInPerSecond/OutPerSecond` 指標。