我正面臨着一個奇怪的問題,那就是我在帶有Apache Beam的流BigQuery表上實現了一個小的delta作業。BigQuery上的Delta作業未命中記錄
我正在將數據流式傳輸到BigQuery表,並且每運行一小時我都會將任何新記錄從該流式表複製到協調錶中。增量構建在我在流表上引入的CreateDatetime列的頂部。一旦記錄被加載到流表中,它將獲得當前的UTC時間戳。因此,三角洲自然會取得所有具有比上一次更新的CreateDatetime的記錄,直到當前批處理運行的時間。
CreatedDatetime >= LastDeltaDate AND
CreatedDatetime < NowUTC
爲LastDeltaDate的邏輯如下:
1. Start: LastDeltaDate = 2017-01-01 00:00:00
2. 1st Delta Run:
- NowUTC = 2017-10-01 06:00:00
- LastDeltaDate = 2017-01-01 00:00:00
- at the end of the successful run LastDeltaDate = NowUTC
3. 2nd Delta Run:
- NowUTC = 2017-10-01 07:00:00
- LastDeltaDate = 2017-10-01 06:00:00
- at the end of the successful run LastDeltaDate = NowUTC
...
現在每一天,我發現是我流表,但一直沒有收到我的核對錶中的記錄。當我檢查時間戳時,我發現它們遠離批處理運行,當我檢查Google Datflow日誌時,我可以看到當時沒有返回查詢的記錄,但是當我現在運行相同的查詢時,記錄。有沒有什麼方法可以讓流式記錄在查詢中超級遲到,或者Apache Beam有可能正在處理記錄但很長一段時間沒有寫入記錄?我沒有應用任何開窗策略。
任何想法?
你如何確定LastDeltaDate? –
@BenChambers我已經更新了我的問題,並說明了如何確定LastDeltaDate。 – jimmy