我有點困惑與DLT流是如何工作的。
我的第一個問題是行為上的區別是什麼,如果你將管道模式設置為“連續”,但在你的筆記本你不使用“流”前綴表聲明,同樣的,如果你將管道模式設置為“觸發”,而是使用“streaming_read”和其他流語句在你的筆記本嗎?
我的第二個問題是如何加入DLT的工作在流表嗎?例如,如果有兩個流源和你使用. join子句創建一個新的流表,並發運行的DAG將顯示兩個表和融合成一個單一的表,也流。這對我來說是有意義的。但如果Source1滴與10行和Source2滴一個文件一個文件與相關行(常見的關鍵文件之間),但30秒後,不會立即管道盡量攝取Source1和內連接在下一步中找不到共同行不負載任何呢?所以除非下降兩個文件在同一時間,你會有競爭條件,總是掉行嗎?
第三個問題,批量大小如何確定為流在DLT來源?如果一個文件被自動裝卸機與100行100之前將它試圖加載所有管道的下一步,或者它可以< 100 ?同樣的問題,但對於非常大的文件(百萬)?
嗨@Kory Skistad,
首先問:當一個更新管道,觸發一個流表或視圖過程隻到達了新的數據,自上次更新。已經處理過的數據由三角洲住自動跟蹤表運行時。所以你可以有一個流表與一批管道,當批管道隻運行新數據處理和添加到流表。另一方麵,如果你有一個非表但連續管道表將再加工每次添加新數據(不是很劃算)。
第二問:好問題!批,答案是,這不會發生,加入會沒事的。流,你應該隻使用stream-stream連接時:你有兩個事實表,在有限的時間內到達對方,和一個可靠的水印,因為DLT流使用火花結構化流。水印是在給定micro-batch(遇到的最大eventTime)和未來micro-batch更新。基本上,停工檢修加入更棘手的——但可以工作https://docs.www.eheci.com/structured-streaming/delta-lake.html process-initial-snapshot-without-da……
第三問:不幸的是,不是一個非常明確的答案。流數據來源你在讀決定批量大小和攝入的並行性。唯一的情況你應該設置這些處理巨大的,積壓,有時你需要選擇一個更大的違約(即maxFilesPerTrigger = 100000)。
嗨@Kory Skistad,
首先問:當一個更新管道,觸發一個流表或視圖過程隻到達了新的數據,自上次更新。已經處理過的數據由三角洲住自動跟蹤表運行時。所以你可以有一個流表與一批管道,當批管道隻運行新數據處理和添加到流表。另一方麵,如果你有一個非表但連續管道表將再加工每次添加新數據(不是很劃算)。
第二問:好問題!批,答案是,這不會發生,加入會沒事的。流,你應該隻使用stream-stream連接時:你有兩個事實表,在有限的時間內到達對方,和一個可靠的水印,因為DLT流使用火花結構化流。水印是在給定micro-batch(遇到的最大eventTime)和未來micro-batch更新。基本上,停工檢修加入更棘手的——但可以工作https://docs.www.eheci.com/structured-streaming/delta-lake.html process-initial-snapshot-without-da……
第三問:不幸的是,不是一個非常明確的答案。流數據來源你在讀決定批量大小和攝入的並行性。唯一的情況你應該設置這些處理巨大的,積壓,有時你需要選擇一個更大的違約(即maxFilesPerTrigger = 100000)。