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