[英]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.