如何在Synapse Apache Spark Notebook写入错误数据后调用exit接口退出
代码调整建议
你需要把mssparkutils.notebook.exit()放在else分支的写入逻辑之后,确保写入操作完全执行完成后再触发Notebook退出,避免出现文件写入不完整的异常。
另外注意你当前写入配置用的是delta格式,如果需要输出parquet格式,需要把format("delta")改成format("parquet")。
调整后的完整代码示例
if validation_result["success"]: print("Successful") # 若校验成功后也需要退出Notebook,可在此处添加退出代码 else: # 先执行错误数据写入操作 ( spark.sql("Select * from notify_error") .coalesce(1) .write.format("parquet") # 若需要保留delta格式可改回原配置 .mode("overwrite") .save(lakePath) ) # 写入完成后再执行Notebook退出 mssparkutils.notebook.exit("校验失败,错误日志已写入") # returnValue可自定义状态信息,方便上层调用逻辑识别返回结果
额外注意点
coalesce(1)虽然能生成单个文件,但数据量较大时会引发单节点性能瓶颈,仅建议错误日志这类小数据量场景使用- 退出时传入的returnValue支持自定义,比如传入错误码、文件存储路径等信息,如果当前Notebook是被其他Notebook调用,可以直接获取该返回值做后续处理
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

