【发布时间】:2021-10-26 19:47:30
【问题描述】:
有多个数据管道可能会导致并发追加异常尝试更新同一个增量表,我无法控制这些管道的并发性。我想捕获异常并重试增量表的更新,但似乎即使我添加了一个尝试并捕获异常也没有得到处理。欢迎提出任何建议。
try:
# Update delta, retry in case of concurrency
curatedTable.alias("staged").merge(updateDF.alias("curated"),
"staged.ExperienceId = curated.ExperienceId AND staged.ExperienceVersion = curated.ExperienceVersion") \
.whenMatchedUpdate(set = { "staged.updated" : "True" } ).execute()
break
except exception as e:
if retry < 2:
continue
else:
raise Exception("RETRY FAILED")
我收到以下消息,而不是收到带有“重试失败”消息的异常
Operation on target Notebook Synapse failed: Py4JJavaError: An error occurred while calling o42198.save.
: org.apache.spark.sql.delta.ConcurrentAppendException: Files were added to the root of the table by a concurrent update. Please try the operation again.
Conflicting commit: ......
【问题讨论】:
标签: apache-spark exception pyspark delta-lake