簡體   English   中英

僅當所有表都對數據塊和增量表有效時才寫入

[英]write only when all tables are valid with databricks and delta table

我正在循環瀏覽一個文件夾中的一些 CSV 個文件。 我只想將這些 CSV 文件寫為增量表,前提是它們都有效。 每個 CSV 文件夾中的文件作為不同的名稱和模式。 在數據修復之前,我想拒絕整個文件夾及其包含的所有文件。 我正在運行大量測試,但最終我必須使用以下循環將文件實際編寫為增量表(針對此問題進行了簡化):

for f in files:
    # read csv 
    df = spark.read.csv(f, header=True, schema=schema)
    # writing to already existing delta table
    df.write.format("delta").save('path/' + f)

有沒有回調機制,只有dataframe都沒有返回錯誤才執行write方法? Delta 表模式執行非常嚴格,這很好,但是盡管在這個循環中傳遞這些文件之前我正在運行所有測試,但錯誤隨時可能彈出。

union不是一個選項,因為我想按日期處理這個並且每個文件都有不同的模式和名稱。

您可以使用df.union()df.unionByName()將所有文件讀取到一個 dataframe 中。然后該文件要么被完全寫入,要么失敗。

# Create empty dataframe with schema to fill up
emptyRDD = spark.sparkContext.emptyRDD()
df = spark.createDataFrame(emptyRDD,schema)

for f in files:
    # read csv 
    dfNext = spark.read.csv(f, header=True, schema=schema)
    df = df.unionByName(dfNext)

df.write.format("delta").save(path)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM