Zeppelin has no written specification for its notes. A .zpln file is the
JSON that Zeppelin’s Java classes
Note and Paragraph serialise to, so this page lists their
saved fields as Apache Zeppelin’s source code declares them.
Sources: Apache Zeppelin’s source on GitHub (master):
zeppelin-server/…/notebook/Note.java, Paragraph.java,
repo/NotebookRepo.java, scheduler/CronJob.java and
scheduler/QuartzSchedulerService.java;
zeppelin-interpreter/…/scheduler/Job.java and
interpreter/InterpreterResult.java; and the Jupyter converter’s
zeppelin-jupyter/…/zformat/Paragraph.java.
Files
The notebook repository names each note’s file from its path and ID:
<path>_<id>.zpln, with the path’s leading /
removed, so a note at /Sales/report with ID 2F8KN6TKK is
Sales/report_2F8KN6TKK.zpln. The ID is read back from the text after the
last _.
Note
| Key | Type | Meaning |
|---|---|---|
paragraphs | array | The paragraphs, in order; see below. |
name | string | The note’s name: the part of its path after the last /. |
id | string | Note ID, generated by Zeppelin’s IdHashes.generateId(). |
defaultInterpreterGroup | string | Default interpreter group of the note. |
version | string | Version string (meaning not documented in the source read). |
noteParams | object | Name to value map of note parameters. |
noteForms | object | Name to form-input map of note forms. |
angularObjects | object | Lists of Angular objects, keyed by name. |
config | object | Note settings; see below. |
info | object | Run state; the source uses isRunning, inIsolatedMode and startTime. |
path | string | Folder and name, starting /; a source comment says it is left out when saving to the notebook repository. |
Note config
| Key | Meaning |
|---|---|
personalizedMode | String "true" or "false": personalised mode on or off. |
isZeppelinNotebookCronEnable | Set from the server’s setting for whether cron scheduling is supported. |
cron | Cron expression read by the Quartz scheduler service. |
cronExecutingUser, cronExecutingRoles | User and roles that a scheduled run executes as. |
looknfeel | Named in a Note.java comment as a config key; values not given there (unknown). |
Paragraph
| Key | Type | Meaning |
|---|---|---|
title | string | Paragraph title. |
text | string | The paragraph’s text: an interpreter directive, then the script. |
user | string | User name (role not documented in the source read). |
dateUpdated | date | Date of the last update. |
progress | integer | Progress of the running job. |
config | object | Paragraph settings; see below. |
settings | object | The paragraph’s GUI (dynamic form) settings. |
results | object | Last result: code and msg, a list of result messages. |
apps | array | Legacy application metadata, kept as it is. |
runtimeInfos | object | Run-time information, keyed by name. |
jobName, id | string | Job name and paragraph ID (from the Job superclass). |
dateCreated, dateStarted, dateFinished | date | Job dates (from Job). |
status | string | Job status; see codes (from Job). |
errorMessage | string | Error message (from Job). |
config keys: Paragraph.java reads enabled
(missing means enabled). The Jupyter converter writes editorHide
(boolean), editorMode (e.g. "ace/mode/python" or
"ace/mode/markdown") and editorSetting with
language and editOnDblClick. Other keys found in the code
base, such as colWidth and tableHide, are not described in
the sources read (unknown).
Interpreter directive
Paragraph splits its text into the interpreter directive, the script
and local properties. Source comments give the shapes %spark.pyspark
followed by the script, and %spark(pool=pool1) with properties in
parentheses. The parser’s exact grammar is in a class not read (unknown here).
Codes
| Field | Values |
|---|---|
Paragraph status | UNKNOWN, READY, PENDING, RUNNING, FINISHED, ERROR, ABORT. |
results.code | SUCCESS, INCOMPLETE, ERROR, KEEP_PREVIOUS_RESULT. |
results.msg[].type | TEXT, HTML, ANGULAR, TABLE, IMG, SVG, NULL, NETWORK. The message class itself was not read, so the field names inside each message are unconfirmed here. |