apache_zeppelin_documentation
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| apache_zeppelin_documentation [2024/03/12 11:26] – [Dependency Management for Interpreter] kalaschnikow | apache_zeppelin_documentation [2024/03/12 16:04] (current) – [Apache Zeppelin Documentation] kalaschnikow | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Apache Zeppelin Documentation ====== | ||
| + | |||
| + | (A part of my [[Apache Zeppelin]] " | ||
| + | |||
| + | This is my conspectus of https:// | ||
| + | |||
| + | |||
| + | ===== Dynamic forms ===== | ||
| + | * [[https:// | ||
| + | * Apache Zeppelin dynamically creates input forms. | ||
| + | * Depending on language backend, there' | ||
| + | * Forms can have different scope (paragraph or note). | ||
| + | * Paragraph scope - available in current paragraph (=where the form is declared?) | ||
| + | * Note scope - available in all paragraphs regardless of which paragraph has code to create these forms. | ||
| + | |||
| + | |||
| + | ===== Display System ===== | ||
| + | |||
| + | ==== Text ==== | ||
| + | |||
| + | ... | ||
| + | |||
| + | |||
| + | ==== HTML ==== | ||
| + | |||
| + | ... | ||
| + | |||
| + | ==== Markdown ==== | ||
| + | |||
| + | ... | ||
| + | |||
| + | ==== Table ==== | ||
| + | |||
| + | '' | ||
| + | |||
| + | ... | ||
| + | |||
| + | ==== Network ==== | ||
| + | |||
| + | The '' | ||
| + | |||
| + | ... | ||
| + | |||
| + | |||
| + | ==== Backend Angular API ==== | ||
| + | |||
| + | '' | ||
| + | |||
| + | === Print AngularJS view === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Bind/unbind variables === | ||
| + | <code scala> | ||
| + | // bind my ' | ||
| + | z.angularBind(String name, Object object) | ||
| + | |||
| + | // bind my ' | ||
| + | z.angularBindGlobal(String name, Object object) | ||
| + | |||
| + | // unbind angular scope variable ' | ||
| + | z.angularUnbind(String name) | ||
| + | |||
| + | // unbind angular scope variable ' | ||
| + | z.angularUnbindGlobal(String name) | ||
| + | </ | ||
| + | ... | ||
| + | |||
| + | === Watch/ | ||
| + | <code scala> | ||
| + | // register for angular scope variable ' | ||
| + | z.angularWatch(String name, (before, after) => { ... }) | ||
| + | |||
| + | // unregister watcher for angular variable ' | ||
| + | z.angularUnwatch(String name) | ||
| + | |||
| + | // register for angular scope variable ' | ||
| + | z.angularWatchGlobal(String name, (before, after) => { ... }) | ||
| + | |||
| + | // unregister watcher for angular variable ' | ||
| + | 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) === | ||
| + | |||
| + | ... | ||
| + | |||
| + | * Also a difference in term of scope: | ||
| + | * Front-end API limits the Angular object binding to a // | ||
| + | * Back-end API allows you to bind an Angular object at the //**global or note scope**//. | ||
| + | |||
| + | |||
| + | ===== Interpreter in Apache Zeppelin ===== | ||
| + | |||
| + | https:// | ||
| + | |||
| + | The concept of Zeppelin interpreter allows any language or data-processing backend to be plugged into Zeppelin. | ||
| + | |||
| + | Supported interpreters: | ||
| + | * Scala with Apache Spark (default) | ||
| + | * Python with Apache Spark | ||
| + | * SQL | ||
| + | * Hive | ||
| + | * JDBC | ||
| + | * Markdown | ||
| + | * Shell | ||
| + | * ... | ||
| + | |||
| + | ==== What are Zeppelin interpreters? | ||
| + | |||
| + | A Zeppelin interpreter is a plug-in which enables Zeppelin users to use a specific language/ | ||
| + | |||
| + | 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 '' | ||
| + | |||
| + | * If you specify interpreter, | ||
| + | * This is done by providing a set of key/value pairs, separated by comma, inside the round brackets right after the interpreter name. | ||
| + | * If key or value contain characters like =, or ,, then you can either escape them with \ character, or wrap the whole value inside the double quotes | ||
| + | * Example: | ||
| + | * < | ||
| + | |||
| + | ==== 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/ | ||
| + | |||
| + | ==== Interpreter binding modes ==== | ||
| + | |||
| + | In the Interpreter Settings, one can choose one of the following interpreter binding modes: | ||
| + | * '' | ||
| + | * every note/user using this interpreter will share a single interpreter instance | ||
| + | * '' | ||
| + | * can be used under 2 dimensions: | ||
| + | * per user | ||
| + | * per note | ||
| + | * '' | ||
| + | * can be used under 2 dimensions: | ||
| + | * per user | ||
| + | * per note | ||
| + | |||
| + | More info: https:// | ||
| + | |||
| + | ==== Choose Interpreters ==== | ||
| + | |||
| + | By default, Zeppelin will register and display all the interpreters under folder '' | ||
| + | |||
| + | ===== User Impersonation ===== | ||
| + | |||
| + | ... | ||
| + | |||
| + | ===== Interpreter Binding Mode ===== | ||
| + | |||
| + | ... | ||
| + | |||
| + | * shared | ||
| + | * ... | ||
| + | * scoped | ||
| + | * ... | ||
| + | * isolated | ||
| + | * ... | ||
| + | |||
| + | ===== Dependency Management for Interpreter ===== | ||
| + | |||
| + | When your code requires external library, instead of doing download/ | ||
| + | |||
| + | * Load libraries recursively from Maven repository | ||
| + | * Load libraries from local filesystem | ||
| + | * Add additional maven repository | ||
| + | |||
| + | |||
| + | This can be done from screen " | ||
| + | |||
| + | ==== P.S. ==== | ||
| + | * Worked for me: | ||
| + | * On my Linux: | ||
| + | * setting the property " | ||
| + | * On my Windows: | ||
| + | * ... | ||
| + | |||
| + | ==== Installing interpreters ==== | ||
| + | |||
| + | ... | ||
| + | |||
| + | ==== Interpreter Execution Hooks ==== | ||
| + | |||
| + | It is possible to register hooks - code which will be executed before or after paragraph code | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | See: https:// | ||
| + | |||
| + | |||
| + | ===== Other Features ===== | ||
| + | |||
| + | ==== Publishing Paragraphs ==== | ||
| + | https:// | ||
| + | |||
| + | Paragraphs can be published in an external website (through '' | ||
| + | |||
| + | ==== Customizing Apache Zeppelin homepage ==== | ||
| + | ... | ||
| + | |||
| + | ==== Notebook actions ==== | ||
| + | ... | ||
| + | * Compare Revisions | ||
| + | ... | ||
| + | |||
| + | |||
| + | ==== Running a Notebook on a Given Schedule Automatically ==== | ||
| + | https:// | ||
| + | |||
| + | * Crone scheduler can be used. | ||
| + | * Crone configuration can be done from the Zeppelin UI | ||
| + | |||
| + | ... | ||
| + | |||
| + | ==== Zeppelin-Context ==== | ||
| + | |||
| + | The zeppelin-context is a system-wide container for common utility functions and user-specific data. | ||
| + | |||
| + | ... | ||
| + | |||
| + | * in many interpreters Zeppelin context is available through the variable '' | ||
| + | * it can be used | ||
| + | * for data exchange | ||
| + | * e.g. String objects exchange between paragraphs: | ||
| + | < | ||
| + | %spark | ||
| + | z.put(" | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | %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: | ||
| + | |||
| + | * get Zeppelin version | ||
| + | * change Zeppelin log level | ||
| + | |||
| + | ==== Zeppelin Notebook REST API ==== | ||
| + | |||
| + | This API allows manipulations (CRUD and start/ | ||
| + | * notes | ||
| + | * paragraphs | ||
| + | * permissions | ||
| + | * cron jobs | ||
| + | * version control | ||
| + | |||
| + | |||
| + | ==== 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. | ||
| + | |||
| + | ... | ||
| + | |||
| + | |||
| + | |||
