通过 IPython/Jupyter,可以使用 IPython 显示模块及其
MarkDown
类输出 markdown。
如何使用 Azure Databricks 完成此任务?
display
尝试使用 Databrick 的显示与 IPython Markdown 类:
from IPython.display import Markdown
display(Markdown('*some markdown* test'))
但这会导致以下错误:
Exception: Cannot call display(<class 'IPython.core.display.Markdown'>)
display
然后我尝试使用 IPython 的
display
:
from IPython.display import display, Markdown
display(Markdown('*some markdown* test'))
但这只是显示文本:
<IPython.core.display.Markdown object>
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')
但这会导致什么也没有出现:
还尝试检查 Azure Databricks 文档。起初,我访问了 https://www.databricks.com/databricks-documentation,这导致我访问 https://learn.microsoft.com/en-ca/azure/databricks/ 但我无法通过搜索或单击链接找到任何内容,我通常发现 Microsoft 文档非常好。
display
来源正如 Saideep Arikontham 在评论中提到的,Databricks 版本 11 及更高版本使用 IPython 内核,所以我深入研究了一些。
根据 Databrick 的
display
函数源代码,它将轻松渲染任何实现 _repr_html()
的对象。
但是,我很难获得我认为
IPython.display.Markdown
应该能够输出的原始 html 输出。我只能找到 _repr_markdown_()
和 _data_and_metadata()
,前者只是调用后者,而输出(至少在 Databricks 中)只是原始的原始降价字符串。
Markdown
和 display_markdown
未提供所需的输出。我在 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 is here!\n*some markdown*\n- and\n- some\n- more'
如下以获得想要的结果。Markdown('''# Markdown is here!\n
*some markdown*\n
- and\n
- some\n
- more''')
注意:
为了让
display_markdown()
显示输出,我们必须指定另一个参数 raw 作为 True
(display_markdown(请先在 Databricks 单元中使用
%pip install markdown
安装 Markdown 库。
这是一个非常有用且简洁的解决方案。但是,我无法让它与表格一起使用。我打算获取数据框并输出包含文本和表格的标记报告。
为此,我的计划是将 Spark DataFrame 转换为 pandas DataFrame,然后使用 pandas to_markdown 函数创建表格文本,然后使用上述解决方案将其输出到 Databricks 单元格中。即
md_table = pd.Series(["elk", "pig", "dog", "quetzal"], name="animal").to_markdown()
markdown = f'''{md_table}'''
Markdown(markdown)
但是,这不起作用,我从单元格中得到以下输出:
| | animal | |---:|:---------| | 0 | elk | | 1 | pig | | 2 | dog | | 3 | quetzal |
如您所见,输出的行之间没有回车符,但将它们添加到字符串中也不起作用。
有人成功将 pandas(或 Spark)DataFrame 渲染为 markdown 吗?