如何引发异常以退出 Synapse Apache Spark 笔记本

Posted

技术标签:

【中文标题】如何引发异常以退出 Synapse Apache Spark 笔记本【英文标题】:How to raise an exception to exit Synapse Apache Spark notebook 【发布时间】:2021-12-26 16:53:47 【问题描述】:

我正在尝试在失败情况下执行两个操作。

    将表的结果写入 parquet 中的单个文件。 退出笔记本。

根据结果采取行动

if validation_result["success"]:
    print("Successful")
else:
    (
        spark.sql("Select * from notify_error")
        .coalesce(1)
        .write.format("delta")
        .mode("overwrite")
        .save(lakePath)
    )

从上面可以看出,我正在尝试使用coalesce(1) 创建一个表。 要退出 Synapse 中的笔记本,我相信代码是:

mssparkutils.notebook.exit(returnValue)

但我不是在上面的代码中放置代码的地方。

有什么想法吗?

【问题讨论】:

【参考方案1】:

你能把raiseValueError一起做吗,例如

%%pyspark

notebookName = mssparkutils.runtime.context.get('notebookname')
errorString = f"error in notebook 'notebookName'"

raiseError = True

if raiseError:
  raise ValueError(errorString)

【讨论】:

wBob,感谢您回来。我真的不明白,如何将您的代码与我的要求联系起来 我认为提出错误会导致笔记本退出,但也许我误解了。看看其他人怎么说。 嗨 wBob,如果您误解了,那么这里的其他人可能会误解。基本上,如果if validation_result["success"]: 1. 将数据保存到“湖路径”,我需要做两件事。 2.退出笔记本。我相信退出笔记本的代码是mssparkutils.notebook.exit() 当我输入mssparkutils.notebook.exit() 时,代码要求提供位置参数 Bob,我调整了您建议的代码并使其工作。谢谢 哦,好消息,感谢您的确认。如果您认为它更准确地反映了您的解决方案,请随意对我的答案进行投票并提供您自己的答案并将其标记为答案,或者甚至对其进行编辑 - 我不介意!

以上是关于如何引发异常以退出 Synapse Apache Spark 笔记本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Azure Synapse Analytics 将自定义 Python 库导入到 Apache Spark 池中?

Apache Zeppelin:使用 z.run() 从另一个运行段落会引发空指针异常

Azure Synapse 管道:如何将增量更新从 SQL Server 移动到 Synapse 以处理数字

为啥在匿名 PL/SQL 块中没有立即引发异常?

Synapse Notebook 参考 - 如何使用 %run

有没有办法防止从sys.exit()引发的SystemExit异常被捕获?