為生產工作負載配置自動加載程序
磚建議你遵循流的最佳實踐在生產中運行自動加載程序。
磚推薦使用自動加載器在三角洲住表增量數據的攝入。三角洲住在Apache火花結構化流表擴展功能,允許您編寫幾行Python或SQL聲明式部署生產數據管道:
監控自動加載程序
查詢文件自動加載程序發現的
請注意
的cloud_files_state
函數是在磚運行時可用10.5及以上。
自動加載器提供了一個SQL API檢查的狀態流。使用cloud_files_state
功能,你可以找到關於文件的元數據,發現了一個汽車加載程序流。簡單查詢從cloud_files_state
,提供與汽車相關的檢查點位置加載程序流。
選擇*從cloud_files_state(“路徑/ /檢查站”);
聽流更新
進一步監測自動加載程序流,磚建議使用Apache的火花流媒體查詢偵聽器接口。
自動加載程序報告指標每批流查詢偵聽器。您可以查看有多少文件積壓,積壓在多大numFilesOutstanding
和numBytesOutstanding
以下指標原始數據流查詢進展儀表板選項卡:
{“源”:({“描述”:“CloudFilesSource /道路/ /源”,“指標”:{“numFilesOutstanding”:“238”,“numBytesOutstanding”:“163939124006”}}]}
在磚運行時的10.1和以後,使用文件通知模式時,近似數的指標還包括文件在雲中事件隊列approximateQueueSize
AWS和Azure。
成本的考慮
運行時自動加載程序,你的成本會的主要來源的成本計算資源和文件的發現。
降低計算成本,磚推薦使用磚的工作安排汽車裝載機使用批處理作業Trigger.AvailableNow
而不是運行不斷,隻要你沒有低延遲的要求。看到配置結構化流觸發間隔。
文件發現成本可以操作列表的形式存儲賬戶目錄清單模式和API請求訂閱服務,文件通知和隊列服務模式。減少文件發現成本,磚建議:
使用觸發器。AvailableNow和rate limiting
請注意
僅在磚Scala 10.1運行時的可用。
在磚運行時為Python和Scala 10.2及以上。
自動加載器可以在磚調度運行工作作為批處理作業使用Trigger.AvailableNow
。的AvailableNow
觸發將指導汽車加載程序來處理所有的文件到達之前查詢開始時間。新文件上傳後流已經開始將被忽略,直到下一個觸發器。
與Trigger.AvailableNow
會發生,文件發現異步處理與數據處理和數據跨多個micro-batches率限製。自動加載程序默認流程每micro-batch最多1000個文件。您可以配置cloudFiles.maxFilesPerTrigger
和cloudFiles.maxBytesPerTrigger
配置文件或多少多少字節micro-batch應該處理。該文件限製是一個硬限製但字節限製是一個軟限製,這意味著比提供的字節可以處理maxBytesPerTrigger
。當提供的選項都是在一起時,自動加載程序將處理很多文件需要達到一個極限。
事件保留
請注意
在磚運行時8.4及以上。
自動加載程序跟蹤發現文件檢查點位置使用RocksDB提供隻有一次攝入擔保。高容量的數據集,您可以使用cloudFiles.maxFileAge
期權到期事件從檢查點位置降低存儲成本和汽車加載程序啟動時間。你可以設置的最小值cloudFiles.maxFileAge
是“14天”
。刪除在墓碑RocksDB出現條目,因此你應該期待增加臨時事件的存儲使用到期之前開始平整。
警告
cloudFiles.maxFileAge
提供高容量的數據集作為成本控製機製,攝取的順序每小時數以百萬計的文件。調優cloudFiles.maxFileAge
錯誤可能導致數據質量問題。因此,磚不建議調整該參數,除非絕對必需。
嚐試調整cloudFiles.maxFileAge
選項可能導致未加工的文件被自動忽略裝載機到期或已經處理過的文件,然後再加工造成重複數據。這裏有一些在選擇時要考慮的因素cloudFiles.maxFileAge
:
如果你流重啟後很長一段時間,文件通知事件,從隊列中被超過
cloudFiles.maxFileAge
將被忽略。同樣的,如果你使用目錄清單,文件可能出現在以上的停機時間cloudFiles.maxFileAge
將被忽略。如果你使用目錄清單模式和使用
cloudFiles.maxFileAge
,例如設置為“1月”
,你停止流並重新啟動流cloudFiles.maxFileAge
設置為“2個月”
超過1個月,所有文件,但是最近2個月再加工。
最好的方法來調優cloudFiles.maxFileAge
就是從一個慷慨的過期,例如,“1年”
和工作向下之類的“9個月”
。如果您設置這個選項你第一次開始流,你不會比攝取數據cloudFiles.maxFileAge
因此,如果你想攝取舊數據不應該當你開始流中設置該選項。