mirror of
https://github.com/apache/zeppelin
synced 2026-05-24 09:38:26 +00:00
### What is this PR for? Improving documentation page. Please check *TODO* and *Screenshots* sections for detail. The motivation is described in [the JIRA ticket](https://issues.apache.org/jira/browse/ZEPPELIN-2583) and discussion is ongoing on the mailing list. ### What type of PR is it? [Improvement | Documentation] ### Todos * [x] - improved the navbar style * [x] - improved the main page * [x] - re-organized content structure * [x] - added tutorial pages: `spark_with_zeppelin.md`, `python_with_zeppelin.md`, `sql_with_zeppelin.md` for overview * [x] - added `multi_user_support.md` page to provide overview * [x] - added the empty `interpreter_binding_mode` page. This will be handed in the different issue: [ZEPPELIN-2582](https://issues.apache.org/jira/browse/ZEPPELIN-2582) * [x] - added the empty `trouble_shooting` page. This can be filled in the following PRs. * [x] - added the empty `useful_developer_tools` page. This can be filled in the following PRs. ### What is the Jira issue? [ZEPPELIN-2596](https://issues.apache.org/jira/browse/ZEPPELIN-2596) ### How should this be tested? 1. checkout 2. `cd docs` 3. `bundle install` (make sure that you have ruby 2.1.0+ and bundle) 4. `bundle exec jekyll serve --watch` 5. open `localhost:4000` ### Screenshots (if appropriate) #### better navbar: before  #### better navbar: after  #### improved main page: before  #### improved main page: after  #### organized content structure: before  #### organized content structure: after  ### Questions: * Does the licenses files need update? - NO * Is there breaking changes for older versions? - NO * Does this needs documentation? - related with docs Author: 1ambda <1amb4a@gmail.com> Closes #2371 from 1ambda/updating-version-doc and squashes the following commits:eb02fa967[1ambda] fix: navbar focus color applies after folding026379ed6[1ambda] fix: Remove docs/.listen_testa7dd4737b[1ambda] fix: sora's comment 1.218c5058f7[1ambda] fix: resolve description in python_with_zeppelin.mdd3ad67c73[1ambda] fix: sora's comment 4d133dbbcc[1ambda] fix: resolve sora's comment 3513c6ff2c[1ambda] fix: resolve sora's comment 1.14c2946928[1ambda] fix: resovle sora's comment 21c3946ac6[1ambda] fix: sora's comment 14d6e4267f[1ambda] fix: Resolve sola's comment 3d0524cafe[1ambda] fix: Set less shadow for nav5f1f998ba[1ambda] docs: Add useful_develop_tools.md9dfd62c74[1ambda] fix: Typo in installation.md30f7d7e06[1ambda] fix: Typo in helium ctrld6877e792[1ambda] docs: Add python_with_zeppelin.md7027e96c0[1ambda] docs: Improve python conda, docker doc stylee55b50a9d[1ambda] fix: Invalid URLs75ddeeaff[1ambda] docs: replace URIs in interpreter5b43993a4[1ambda] docs: Add sql_with_zeppelin053794e84[1ambda] docs: Add spark_with_zeppelin.mdd4d88b9c7[1ambda] docs: Improve proxy docb46cdd126[1ambda] docs: Add empty interpreter_binding_mode.md06fcb239e[1ambda] docs: Add empty personalized_mode.md4991cf0a7[1ambda] docs: Update upgrading.md53142b7a0[1ambda] fix: Simplify install.md8a5c1e721[1ambda] docs: Add multi_user_support.md34095775e[1ambda] fix: Increase font size to 15pxa03b04b33[1ambda] fix: Remove sample text from trouble_shooting.md199842590[1ambda] fix: Remove docker doc link66a2a7d26[1ambda] docs: Improve impersonation page0a6e3fc1d[1ambda] docs: Improve install docccd999ed5[1ambda] docs: Improve helium docf8d742d08[1ambda] fix: an invalid link in navbarb7aa5f884[1ambda] fix: URLs in development61a175d94[1ambda] docs: Update install.md4c56de5c4[1ambda] fix: URLs in setup0b1d63513[1ambda] fix: URLs in quickstart28970a4fe[1ambda] feat: Add docs/usage735946bca[1ambda] feat: rename /quickstartb351cf237[1ambda] fix: Add missing linksb70770b4f[1ambda] feat: Change URLs in nav, index94e80aef6[1ambda] fix: doens't display navbar version in small6e0cab110[1ambda] feat: Update doc section namesb9ce256ff[1ambda] feat: Hide version in navbar when mdf8bab52be[1ambda] fix: Better image display in index.mdeeb37d5b5[1ambda] fix: Add RL padding for mobile browserceb60b5ee[1ambda] feat: Style collapsed nav for mobile browser4ebafb4b6[1ambda] commit
81 lines
3.2 KiB
Markdown
81 lines
3.2 KiB
Markdown
---
|
|
layout: page
|
|
title: "Interpreter Execution Hooks (Experimental)"
|
|
description: "Apache Zeppelin allows for users to specify additional code to be executed by an interpreter at pre and post-paragraph code execution."
|
|
group: manual
|
|
---
|
|
<!--
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
{% include JB/setup %}
|
|
|
|
# Interpreter Execution Hooks (Experimental)
|
|
|
|
<div id="toc"></div>
|
|
|
|
## Overview
|
|
|
|
Apache Zeppelin allows for users to specify additional code to be executed by an interpreter at pre and post-paragraph code execution.
|
|
This is primarily useful if you need to run the same set of code for all of the paragraphs within your notebook at specific times.
|
|
Currently, this feature is only available for the spark and pyspark interpreters.
|
|
To specify your hook code, you may use `z.registerHook()`.
|
|
For example, enter the following into one paragraph:
|
|
|
|
```python
|
|
%pyspark
|
|
z.registerHook("post_exec", "print 'This code should be executed before the parapgraph code!'")
|
|
z.registerHook("pre_exec", "print 'This code should be executed after the paragraph code!'")
|
|
```
|
|
|
|
These calls will not take into effect until the next time you run a paragraph.
|
|
|
|
|
|
In another paragraph, enter
|
|
|
|
```python
|
|
%pyspark
|
|
print "This code should be entered into the paragraph by the user!"
|
|
```
|
|
|
|
The output should be:
|
|
|
|
```
|
|
This code should be executed before the paragraph code!
|
|
This code should be entered into the paragraph by the user!
|
|
This code should be executed after the paragraph code!
|
|
```
|
|
|
|
If you ever need to know the hook code, use `z.getHook()`:
|
|
|
|
```python
|
|
%pyspark
|
|
print z.getHook("post_exec")
|
|
|
|
print 'This code should be executed after the paragraph code!'
|
|
```
|
|
Any call to `z.registerHook()` will automatically overwrite what was previously registered.
|
|
To completely unregister a hook event, use `z.unregisterHook(eventCode)`.
|
|
Currently only `"post_exec"` and `"pre_exec"` are valid event codes for the Zeppelin Hook Registry system.
|
|
|
|
Finally, the hook registry is internally shared by other interpreters in the same group.
|
|
This would allow for hook code for one interpreter REPL to be set by another as follows:
|
|
|
|
```scala
|
|
%spark
|
|
z.unregisterHook("post_exec", "pyspark")
|
|
```
|
|
|
|
The API is identical for both the spark (scala) and pyspark (python) implementations.
|
|
|
|
### Caveats
|
|
Calls to `z.registerHook("pre_exec", ...)` should be made with care. If there are errors in your specified hook code, this will cause the interpreter REPL to become unable to execute any code pass the pre-execute stage making it impossible for direct calls to `z.unregisterHook()` to take into effect. Current workarounds include calling `z.unregisterHook()` from a different interpreter REPL in the same interpreter group (see above) or manually restarting the interpreter group in the UI.
|