Table of Contents

Apache Zeppelin Documentation

(A part of my Apache Zeppelin “project”.)

This is my conspectus of https://zeppelin.apache.org/docs/latest/.

Dynamic forms

Display System

Text

…

HTML

…

Markdown

…

Table

%table

…

Network

The %network directive ⇒ Zeppelin treats the output as a graph.

…

Backend Angular API

%angular directive

println("%angular <h3>Hello world</h3>")

Bind/unbind variables

// bind my 'object' as angular scope variable 'name' in current notebook.
z.angularBind(String name, Object object)
 
// bind my 'object' as angular scope variable 'name' in all notebooks related to current interpreter.
z.angularBindGlobal(String name, Object object)
 
// unbind angular scope variable 'name' in current notebook.
z.angularUnbind(String name)
 
// unbind angular scope variable 'name' in all notebooks related to current interpreter.
z.angularUnbindGlobal(String name)

…

Watch/unwatch variables

// register for angular scope variable 'name' (notebook)
z.angularWatch(String name, (before, after) => { ... })
 
// unregister watcher for angular variable 'name' (notebook)
z.angularUnwatch(String name)
 
// register for angular scope variable 'name' (global)
z.angularWatchGlobal(String name, (before, after) => { ... })
 
// unregister watcher for angular variable 'name' (global)
z.angularUnwatchGlobal(String name)

…

Frontend Angular API

…

Bind/Unbind variables

…

Run paragraph

…

Overriding dynamic form with Angular Object

…

Feature matrix comparison (between back-end and front-end API)

…

Interpreter in Apache Zeppelin

https://zeppelin.apache.org/docs/0.11.0/usage/interpreter/overview.html

The concept of Zeppelin interpreter allows any language or data-processing backend to be plugged into Zeppelin.

Supported interpreters:

What are Zeppelin interpreters?

A Zeppelin interpreter is a plug-in which enables Zeppelin users to use a specific language/data-processing backend. For example, to use Scala code in Zeppelin, you would use the %spark interpreter.

You can create multiple interpreters for the same engine with different interpreter setting. e.g. You can create spark2 for Spark 2.x and create spark1 for Spark 1.x.

For each paragraph you write in Zeppelin, you need to specify its interpreter first via %interpreter_group.interpreter_name. e.g. %spark.pyspark, %spark.r.

What are interpreter groups?

Every interpreter belongs to an Interpreter Group. Interpreter Groups are units of interpreters that run in one single JVM process and can be started/stopped together.

Interpreter binding modes

In the Interpreter Settings, one can choose one of the following interpreter binding modes:

More info: https://zeppelin.apache.org/docs/0.11.0/usage/interpreter/interpreter_binding_mode.html

Choose Interpreters

By default, Zeppelin will register and display all the interpreters under folder $ZEPPELIN_HOME/interpreters. But you can configure property zeppelin.interpreter.include to specify what interpreters you want to include or zeppelin.interpreter.exclude to specify what interpreters you want to exclude. Only one of them can be specified, you can not specify them together. (–> why?)

User Impersonation

…

Interpreter Binding Mode

…

Dependency Management for Interpreter

When your code requires external library, instead of doing download/copy/restart Zeppelin, you can easily do following jobs in this menu.

This can be done from screen “Interpreters” (accessible from menu point “Interpreters” of the navigation bar on the main screen).

P.S.

Installing interpreters

…

Interpreter Execution Hooks

It is possible to register hooks - code which will be executed before or after paragraph code

See: https://zeppelin.apache.org/docs/0.11.0/usage/interpreter/execution_hooks.html

Other Features

Publishing Paragraphs

https://zeppelin.apache.org/docs/0.11.0/usage/other_features/publishing_paragraphs.html

Paragraphs can be published in an external website (through iframe HTML tag) or simply opened in a new browser window. Simply copy the link (using menu point from the paragraph's menu) and use it. See:

Customizing Apache Zeppelin homepage

…

Notebook actions

…

…

Running a Notebook on a Given Schedule Automatically

https://zeppelin.apache.org/docs/0.11.0/usage/other_features/cron_scheduler.html

…

Zeppelin-Context

The zeppelin-context is a system-wide container for common utility functions and user-specific data.

…

%spark
z.put("maxAge", 83)
%jdbc(interpolate=true)

select * from bank where age = {maxAge}

REST API

Interpreter API

For manipulation on interpreters and its settings. …

Zeppelin Server REST API

At the moment seems to be not very comprehensive. It is only these two calls available:

Zeppelin Notebook REST API

This API allows manipulations (CRUD and start/stop/restart/etc) on :

Zeppelin Notebook Repository API

…

Zeppelin Configuration REST API

To manipulate config key/value pairs.

…

Zeppelin Credential REST API

To manipulate credentials configuration.

…

Zeppelin Helium REST API

Helium is a plugin system that can extend Zeppelin a lot. For example, you can write custom display system or install already published one in Helium Online Registry.

…