使用 Zeppelin 的内联散景图

Inline Bokeh Graph with Zeppelin

是否可以使用 Pyspark 解释器在 Zeppelin 中内嵌显示 Bokeh 图表?

例如,在 Jupiter 中,这可以使用命令 output_notebook() 加载 bokeh js 来完成。

这里是生成简单折线图的示例。

from bokeh.io import output_notebook, show
from bokeh.plotting import figure

output_notebook()

# create a new plot 
p = figure(plot_width=400, plot_height=400, title="Simple Line Plot")

# add a line renderer
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], line_width=2)

show(p) # show the results

实际注册到 post 这个 - 我正在尝试让它工作,但是 运行 遇到了一些有趣的问题。

Bokeh notebook 输出似乎依赖于 IPython notebook,而 zeppelin 可能不依赖。

对于静态输出,许多 IPython notebook 常用的资源在 Zeppelin 中并不可用。

我在这里尝试一种可能最终会起作用的解决方法 - Zeppelin 有一些 Angular 标记可用于渲染 Bokeh HTML 文件。

我刚刚得到它与以下内容的内联:

s = "%html "
txt = open('log_lines.html').read()
s += txt
print(s)

编辑: 看起来您仍然需要在 graph/object 上调用 show() 来创建要显示的文件。这似乎不会造成错误,但我对 Bokeh 还是很陌生。

我的项目需要和弦图,并在 pyspark 和 Zeppelin 的 python 解释器中成功地将散景样本改编为 运行。对 Zeppelin 的支持仍然需要一些爱,但对于我的目的来说已经足够好了。

%pyspark

import matplotlib as mpl
mpl.use('Agg')
import pandas as pd
from bokeh.charts import Chord
from bokeh.io import show, output_file, output_notebook
from bokeh.sampledata.les_mis import data

nodes = data['nodes']
links = data['links']

nodes_df = pd.DataFrame(nodes)
links_df = pd.DataFrame(links)

source_data = links_df.merge(nodes_df, how='left', left_on='source', right_index=True)
source_data = source_data.merge(nodes_df, how='left', left_on='target', right_index=True)
source_data = source_data[source_data["value"] > 5]  # Select those with 5 or more connections

chord_from_df = Chord(source_data, source="name_x", target="name_y", value="value")
#output_file('chord_from_df.html')
output_notebook(notebook_type='zeppelin')
show(chord_from_df)

如果您使用的是 Bokeh >= 0.12.7,则可以使用 Jeff Zhang 的 bkzep 包。例如,在 Zeppelin 之外执行此操作:

pip install bkzep

然后,正如 https://github.com/zjffdu/bkzep#how-to-use 中所说,您只需在绑定到 Spark 解释器组的 Zeppelin 笔记本中执行此操作:

from bokeh.io import output_notebook
import bkzep
output_notebook(notebook_type='zeppelin')

然后您应该能够在笔记本中看到内联的散景图。我可以使用 Bokeh 0.12.13 确认这在 Zeppelin 0.7.0 中有效。示例: