将 Zeppelin 与外部 javascript 工具一起使用,例如 plotly
Posted
技术标签:
【中文标题】将 Zeppelin 与外部 javascript 工具一起使用,例如 plotly【英文标题】:Use Zeppelin with external javascript tools like plotly 【发布时间】:2018-05-15 10:20:45 【问题描述】:我目前使用本地 Tomcat/JSP 服务/网页来使用 sql 获取数据并使用 plotly 将其显示在 webbrowser 上(使用此 javascript 库本地呈现)。我想对用户进行更多的数据处理,比如过滤,而不能用 sql 来做,因为 sql 查询需要几秒钟,一个网页的几个 sql 查询会花费太多时间。在 JSP 中,数据过滤非常复杂,因为您必须编写自己的过滤器函数,例如 https://blog.pavelsklenar.com/using-filteredrowset-simple-example/ 或 http://www.java2s.com/Code/Java/Database-SQL-JDBC/FilteredRowSetDemo.htm 。如果你知道 Pythons Pandas 或 sql 这似乎太复杂了。
我想知道 Zeppelin 是否是一个很好的解决方案:
直接通过 sql 获取数据(已经可以使用),但是集成显示的可能性很好,但对我来说还不够。 用户可以使用 AngularJS 视图 (https://zeppelin.apache.org/docs/0.7.3/displaysystem/front-end-angular.html) 调整多个过滤器(例如,在 1 和 3 之间的 column1 等)。 从最后一段中读取过滤器范围,并使用一些过滤器与 python 的 pandas 进行数据整理,并将其保存为新的数据帧。 使用此过滤后的数据框并使用本地 plotly.js 文件绘制数据(我有纯 plotly JS 代码)。一般来说,它可以与Using d3.js with Apache Zeppelin 的 %angular 段落一起使用(即使没有来自“else”的代码,所以 d3 似乎可以在开箱即用的 zeppelin 中使用)。但我想知道 如何将数据帧从 Python 传递到 Angular 节点。根据https://zeppelin.apache.org/docs/0.7.3/displaysystem/back-end-angular.html我必须使用Spark才能使用变量;所以看来我必须整合一个火花包装段落。之后我是否必须编写将数据帧转换为 JSON 或类似的代码? 如何使用 plotly 或其他本地 javascript 文件?如何指定位置?你有什么想法或者你有其他/更好的想法?
【问题讨论】:
【参考方案1】:我通过使用 pythons matplotlib 进行绘图任务,使用非交互式(这意味着没有像 plotly 或 d3 这样的 JavaScript 库)解决了这个问题。
【讨论】:
以上是关于将 Zeppelin 与外部 javascript 工具一起使用,例如 plotly的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Zeppelin 上从 JavaScript 设置角度变量值
如何在 zeppelin 中将数组从 spark 绑定到 javascript?
在 zeppelin 中使用从 %pyspark 到 %python 的 Dataframe
在 Ubuntu 14.04 上以 Yarn-Client 模式在 Spark 上的 Zeppelin 中加载外部依赖项