databricks - 如何从 python 单元在 databricks 笔记本中显示 markdown 输出

标签 databricks azure-databricks databricks-notebook

使用 IPython/Jupyter 可以使用 IPython display module and its MarkDownclass 输出 markdown .

Example markdown output

问题

如何使用 Azure Databricks 实现此目的?

我尝试了什么

Databricks 显示

尝试使用 Databrick 的显示与 IPython Markdown 类:

from IPython.display import Markdown
display(Markdown('*some markdown* test'))

但这会导致以下错误:

Exception: Cannot call display(<class 'IPython.core.display.Markdown'>)

IPython 显示

然后我尝试使用 IPython 的 display:

from IPython.display import display, Markdown
display(Markdown('*some markdown* test'))

但这只是显示文本:

<IPython.core.display.Markdown object>

Example failed ouput

IPython display_markdown

尝试使用 IPython 的 display_markdown:

from IPython.display import display_markdown
display_markdown('# Markdown is here!\n*some markdown*\n- and\n- some\n- more')

但这会导致什么也没有显示:

Failed display_markdown

查找文档

还尝试检查 Azure Databricks 文档。一开始我访问了https://www.databricks.com/databricks-documentation这引导我到 https://learn.microsoft.com/en-ca/azure/databricks/但我无法通过搜索或单击链接找到任何内容,而且我通常发现 Microsoft 文档非常好。

检查 Databrick 的显示

正如 Saideep Arikontham 在评论中提到的,Databricks 版本 11 及更高版本使用 IPython 内核,因此我进行了更深入的研究。

根据 Databrick 的 display 函数源代码,它将轻松呈现任何实现 _repr_html() 的对象。

Databricks display

但是,我很难获得原始 html 输出,我假设 IPython.display.Markdown 应该能够输出。我只能找到 _repr_markdown_()_data_and_metadata() where the former just calls the latter并且输出(至少在 Databricks 中)只是原始的原始 Markdown 字符串。

最佳答案

Markdowndisplay_markdown 在 Azure Databricks 中使用时未提供所需的输出。我在 Databricks 11.1 运行时中完成了以下操作。

  • 从问题中获取输入,我了解到当类具有 _repr_html() 时,它能够输出所需的结果。但是当类中不存在此方法时,它会返回一个对象。
  • 因此,为了使 Markdown 正常工作,我编写了自己的 Markdown 类,其中使用了 Python 的 markdown.
from IPython.display import DisplayObject, TextDisplayObject

class Markdown(TextDisplayObject):

    def __init__(self,TextDisplayObject):
        import markdown as md
        
        #converting markdown to html
        self.html = md.markdown(TextDisplayObject)
        
    
    def _repr_html_(self):
        return self.html
  • 现在,这个类与IPython.display.Markdown并不完全相同。我已经格式化了你的示例 Markdown '# Markdown is here!\n*some markdown*\n- and\n- some\n- more' 如下以获得所需的结果。
Markdown('''# Markdown is here!\n
*some markdown*\n
- and\n
- some\n
- more''')

enter image description here

注意:

  • 要使 display_markdown() 显示输出,我们必须将另一个参数 raw 指定为 True (display_markdown(, raw=True))。但是,在 Databricks 中,它返回未定义 (NoneType)。

  • 请先在 Databricks 单元中使用 %pip install markdown 安装 Markdown 库。

关于databricks - 如何从 python 单元在 databricks 笔记本中显示 markdown 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73551155/

相关文章:

databricks - 分析异常: Operation not allowed: `CREATE TABLE LIKE` is not supported for Delta tables;

apache-spark - 如何在 Databricks 中使用 Spark 将 JSON 文件并行写入到已安装的目录

azure - Azure Blob 存储和 Azure databricks 之间的高效数据检索过程

python - Pyspark databricks 从第一个文件中读取 header

scala - 将重试添加到 future 序列中,以便在 Scala 中并行运行 Databricks 笔记本

pyspark - Hyperopt 无法使用跟踪 URI : databricks 执行 mlflow.end_run()

Azure Databricks 群集初始化脚本 - 从已安装的存储安装wheel