带有zeppelin笔记本的动态交互式仪表板

时间:2016-09-01 19:54:54

标签: javascript html iframe apache-zeppelin spark-notebook

我希望有一个更具交互性的仪表板。比如从数据库中读取数据,将其提供给选择框,在选择框的更改时发送值并运行查询。

我希望使用zeppelin bcz在选定值上实现此目的,我必须显示分析。

实现这一目标的方法是什么,这可以通过zeppelin实现。

我尝试使用选择框,但我无法保存所选值并将其发送到下一个查询并执行它。

之类的东西
select age, count(1) value 
from bank 
where marital="${marital=single,single|divorced|married}" 
group by age 
order by age

我没有得到如何存储此参数并将所选参数从一个段落发送到另一个段落

或者类似于从UI处理所有这些东西,让我们说javascript html并将选定的值作为参数发送到zeppelin?就像是 这时使用网址

<iframe src="http://myipaddress:8080/#/notebook/2BWCNP7V8/paragraph/20160831-115204_1774035770?asIframe&param1=value1&param2=value2" width="500" height="300"  scrolling="no" frameBorder="0" id="iframe1" style="text-align:center;" >Browser not compatible.</iframe>

在我的zeppelin段落中使用这些param1 = value1&amp; param2 = value2? 技术上可行或不可以,我不明白。 请帮我怎么做到这一点? 提前谢谢:)

1 个答案:

答案 0 :(得分:1)

我们可以通过以下代码获得所有婚姻

val maritals = bank.select("marital").distinct.collect.map(_.getString(0))

转换为seq ZeppelinContext想要

val seq = mairitals.zipWithIndex.map{case (x,y) => (y.toString, x)}.toSeq

然后我们可以像这样选择它

val index = z.select("marital", "1", seq)
val marital = seq(index.toString.toInt)._2

marital可以用于进一步处理。等。

val sql = s"""select distinct job from bank where marital=="$marital""""

sqlContext.sql(sql).show

或者当我使用spark-highcharts时。在这种情况下,我想绘制某些婚姻状况的年龄平均余额。

highcharts(bank.filter(col("marital") === marital)
  .series("x" -> "age", "y" -> avg(col("balance")))
  .orderBy(col("age"))).plot()
  

注意:更改值时,只会自动执行带有select的段落。