Singer 學習十一 配置以及狀態管理
阿新 • • 發佈:2019-01-09
配置和狀態檔案通過提供身份驗證資訊,開始時間和有關以前呼叫的資訊,幫助為Taps和Targets提供上下文
配置檔案
配置檔案包含tap 執行需要的資訊,通常包含API,以及資料來源的憑據
- 特殊欄位
start_data ,首次同步時候使用,指定資料同步的範圍
user_agent 提供方便的問題解決,反饋的地址,一般可能是email 地址 - 格式
必須是json 格式檔案,參考
{
"api_key" : "ABC123ASDF5432",
"start_date" : "2017-01-01T00:00:00Z",
"user_agent" : "Stitch ([email protected])"
}
狀態檔案
狀態檔案是一個json map 被用來儲存呼叫tap 的資訊,對於需要處理狀態的stream 必須定期的進行狀態資料
寫入stdout,同時應該支援解析--state 配置引數
狀態常用來記錄最後一次呼叫中斷的記錄點,此時狀態通常包含 last_updated_at
與源欄位對應的時間戳,如果在
沒有--state 引數,應該從頭開始,或者某個適當的預設位置,如果包含了--state,就需要從狀態記錄檔案開始
bookmark
使用者記錄當愛你tap 對於資料來源處理的進度,如果tap 的stream 可以各自具有獨立的狀態,則Tap的狀態輸出
應符合以下格式:狀態物件包含對映到物件的頂級屬性“書籤”。書籤物件包含流識別符號作為屬性名稱,
每個屬性名稱對映到描述相應流的狀態的物件
參考:
{
"bookmarks": {
"orders": {
"last_record": "2017-07-07T10:20:00Z"
},
"customers": {
"last_record": 123
}
}
}
需要記住的事情
- 寫入狀態時,將不會同步該狀態之前的資料,因此在所有可能的異常都將被丟擲之前不要更新狀態。
- 不支援按更新的時間戳過濾或包含更新的時間戳的端點不支援儲存狀態。
- 如果API支援按更新的時間戳進行過濾,請使用該過濾進行過濾。如果API不支援過濾但確實返回更新的資料時間戳,
請在流式傳輸資料之前按時間戳進行過濾。 - 當流入資料時,儘可能按升序流式傳輸資料。
- 工作可以在任何時候中斷。儲存的狀態永遠不應該是無效的。過早儲存狀態的中斷作業將丟失資料。儲存狀態太晚的中
斷作業將導致複製的重複行增加參考資料
https://github.com/singer-io/getting-started/blob/master/docs/CONFIG_AND_STATE.md