問題
您有一個結構化流作業通過S3-SQS連接器運行。假設您希望以SNS數據為後盾重新創建源SQS,並且希望在同一作業和同一輸出目錄中繼續處理一個新隊列。
解決方案
請使用以下步驟:
- 創建新的SQS隊列並訂閱s3-events(從SNS)。此時,舊隊列和新隊列中都有相同的消息。
- 設置選項allowOverwrites來假在新的流作業中並開始運行它。
- 取一個大於觸發時間的短時間間隔重疊,關閉舊作業。
為什麼會這樣?
使用SQS Stream, Apache Spark維護檢查點目錄中的文件路徑。如果你設置allowOverwrites來假(默認為真正的),其中一個讀取將在同時運行兩個隊列時被丟棄。在這種情況下,文件不會被重新處理,也不會有任何重複或數據丟失。