Apache Zeppelin是基于Web的笔记本,支持SQL、Scala等数据驱动的交互式数据分析和协作文档,通过JDBC可以支持PostgreSQL、MySQL、Amazon Redshift、Hive等数据库。在部署方面,支持单个用户,也支持多用户,可以满足数据摄取、数据发现、数据分析、数据可视化与协作等。
Zeppelin中核心的概念是Interpreter,Interpreter是一个插件,允许用户使用一个指定的语言或数据处理器。每一个Interpreter都属于一个InterpreterGroup,同一个InterpreterGroup的Interpreters可以相互引用,例如SparkSqlInterpreter可以引用SparkInterpreter以获取SparkContext,因为它们属于同一个InterpreterGroup。当前已经实现的Interpreter有Spark解释器、Python解释器、SparkSQL解释器、JDBC、Markdown和Shell等。
Interpreter接口中有3个重要的方法:Open、Close、Interpret,另外还有Cancel、getProgress、Completion等方法。
●Open:初始化部分,只会调用一次。
●Close:关闭释放资源的接口,只会调用一次。
●Interpret:运行一段代码并返回结果,同步执行方式。
●Cancel:可选的接口,用于结束interpret方法。
●getProgress:用于获取interpret的百分比进度。
●Completion:基于游标位置获取结束列表,通过这个接口可以实现自动结束。
此外,Zeppelin也存在一定的不足,优点和缺点主要如下:
优点:
(1)提供restful和webSocket两种接口方式。
(2)使用Spark解释器,进行接口编程,可以自己操作SparkContext。
(3)扩展性好,可以方便地自定义解释器。
缺点:
(1)没有提供JAR包的方式运行Spark任务。
(2)只有同步的方式运行程序,等待时间较长。