--- layout: page title: "Dynamic Interpreter Loading using REST API" description: "Apache Zeppelin provides pluggable interpreter architecture which results in a wide and variety of the supported backend system. In this page, we will introduce dynamic interpreter loading using REST API." group: usage/interpreter --- {% include JB/setup %} # Dynamic Interpreter Loading using REST API
Apache Zeppelin provides pluggable interpreter architecture which results in a wide and variety of the supported backend system. In this section, we will introduce **Dynamic interpreter loading** using **REST API**. This concept actually comes from [Zeppelin Helium Proposal](https://cwiki.apache.org/confluence/display/ZEPPELIN/Helium+proposal). Before we start, if you are not familiar with the concept of **Zeppelin interpreter**, you can check out [Overview: Zeppelin Interpreter](./overview.html) first. ## Overview In the past, Zeppelin was loading interpreter binaries from `/interpreter/[interpreter_name]` directory. They were configured by `zeppelin.interpreters` property in `conf/zeppelin-site.xml` or `ZEPPELIN_INTERPRETERS` env variables in `conf/zeppelin-env.sh`. They were loaded on Zeppelin server startup and stayed alive until the server was stopped. In order to simplify using 3rd party interpreters, we changed this way to **dynamically** load interpreters from **Maven Repository** using **REST API**. Hopefully, the picture below will help you to understand the process.
**POST**. And the parameters you need are:
1. **Artifact:** Maven artifact ( groupId:artifactId:version )
2. **Class Name:** Package name + Interpreter class name
3. **Repository ( optional ):** Additional maven repository address
For example, if you want to load `markdown` interpreter to your Zeppelin, the parameters and URL you need may look like:
```
http://127.0.0.1:8080/api/interpreter/load/md/markdown
```
```
{
"artifact": "org.apache.zeppelin:zeppelin-markdown:0.6.0-SNAPSHOT",
"className": "org.apache.zeppelin.markdown.Markdown",
"repository": {
"url": "http://dl.bintray.com/spark-packages/maven",
"snapshot": false
}
}
```
The meaning of each parameters is:
1. **Artifact**
- groupId: org.apache.zeppelin
- artifactId: zeppelin-markdown
- version: 0.6.0-SNAPSHOT
2. **Class Name**
- Package Name: org.apache.zeppelin
- Interpreter Class Name: markdown.Markdown
3. **Repository ( optional )**
- Url: http://dl.bintray.com/spark-packages/maven
- Snapshot: false
> Please note: The interpreters you downloaded need to be **reload**, when your Zeppelin server is down.
### Unload
If you want to **unload** the interpreters using REST API,
```
http://[zeppelin-server]:[zeppelin-port]/api/interpreter/unload/[interpreter_group_name]/[interpreter_name]
```
In this case, the Restful method will be **DELETE**.




