如何將SNS流作業切換到新的SQS隊列

寫的亞當Pavlacka

最後發布日期:2022年5月18日

問題

您有一個結構化流作業通過S3-SQS連接器運行。假設您希望以SNS數據為後盾重新創建源SQS,並且希望在同一作業和同一輸出目錄中繼續處理一個新隊列。

解決方案

請使用以下步驟:

  1. 創建新的SQS隊列並訂閱s3-events(從SNS)。此時,舊隊列和新隊列中都有相同的消息。
  2. 設置選項allowOverwrites在新的流作業中並開始運行它。
  3. 取一個大於觸發時間的短時間間隔重疊,關閉舊作業。

為什麼會這樣?

使用SQS Stream, Apache Spark維護檢查點目錄中的文件路徑。如果你設置allowOverwrites(默認為真正的),其中一個讀取將在同時運行兩個隊列時被丟棄。在這種情況下,文件不會被重新處理,也不會有任何重複或數據丟失。