zeppelin/docs/usage/rest_api/interpreter.md
Nelson Costa 96d78ee57b [ZEPPELIN-2714] Soft-code Spark UI button visualization
### What is this PR for?
When "spark.ui.enabled" property is set to "false" we should not show the Spark UI button.
We keep the same behaviour when this property does not exist or when it exists and it's set to true.

### What type of PR is it?
[ Improvement]

### What is the Jira issue?
* https://issues.apache.org/jira/browse/ZEPPELIN-2714

### How should this be tested?
1. Open Zeppelin, go to Interpreter > Spark
1. Click spark ui > msg: "No spark application running"
1. Go to a paragraph, run "sc.parallelize(1 to 100).count()", check "SPARK JOB" button
1. Go to Interpreter > Spark > Set "spark.ui.enabled" to "false"
1. Rerun paragraph > "SPARK JOB" button not visible
1. Go to Interpreter > Spark > "spark ui" button not visible
Also, test with "spark.ui.enabled"="true" and other workflow combinations

### Questions:
* Does the licenses files need update? N
* Is there breaking changes for older versions? N
* Does this needs documentation? N

Author: Nelson Costa <nelson.costa85@gmail.com>

Closes #2456 from necosta/zeppelin2714 and squashes the following commits:

278a23e [Nelson Costa] [ZEPPELIN-2714] Fixed broken unit-test
edf29cc [Nelson Costa] [ZEPPELIN-2714] Minor final fix
294dea8 [Nelson Costa] [ZEPPELIN-2714] Improvements to change request
a85864c [Nelson Costa] [ZEPPELIN-2714] Soft-code Spark UI button visualization
2017-07-09 00:43:54 -07:00

14 KiB

layout title description group
page Apache Zeppelin Interpreter REST API This page contains Apache Zeppelin Interpreter REST API information. usage/rest_api

{% include JB/setup %}

Apache Zeppelin Interpreter REST API

Overview

Apache Zeppelin provides several REST APIs for interaction and remote activation of zeppelin functionality. All REST APIs are available starting with the following endpoint http://[zeppelin-server]:[zeppelin-port]/api. Note that Apache Zeppelin REST APIs receive or return JSON objects, it is recommended for you to install some JSON viewers such as JSONView.

If you work with Apache Zeppelin and find a need for an additional REST API, please file an issue or send us an email.

Interpreter REST API List

The role of registered interpreters, settings and interpreters group are described in here.

List of registered interpreters

Description This ```GET``` method returns all the registered interpreters available on the server.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter```
Success code 200
Fail code 500
Sample JSON response
{
  "status": "OK",
  "message": "",
  "body": {
    "md.md": {
      "name": "md",
      "group": "md",
      "className": "org.apache.zeppelin.markdown.Markdown",
      "properties": {},
      "path": "/zeppelin/interpreter/md"
    },
    "spark.spark": {
      "name": "spark",
      "group": "spark",
      "className": "org.apache.zeppelin.spark.SparkInterpreter",
      "properties": {
        "spark.executor.memory": {
          "name": "spark.executor.memory",
          "defaultValue": "1g",
          "description": "Executor memory per worker instance. ex) 512m, 32g",
          "type": "string"
        },
        "spark.cores.max": {
          "defaultValue": "",
          "description": "Total number of cores to use. Empty value uses all available core.",
          "type": "number"
        },
      },
      "path": "/zeppelin/interpreter/spark"
    },
    "spark.sql": {
      "name": "sql",
      "group": "spark",
      "className": "org.apache.zeppelin.spark.SparkSqlInterpreter",
      "properties": {
        "zeppelin.spark.maxResult": {
          "name": "zeppelin.spark.maxResult",
          "defaultValue": "1000",
          "description": "Max number of Spark SQL result to display.",
          "type": "number"
        }
      },
      "path": "/zeppelin/interpreter/spark"
    }
  }
}
        

### List of registered interpreter settings
Description This ```GET``` method returns all the interpreters settings registered on the server.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting```
Success code 200
Fail code 500
Sample JSON response
{
  "status": "OK",
  "message": "",
  "body": [
    {
      "id": "2AYUGP2D5",
      "name": "md",
      "group": "md",
      "properties": {
        "_empty_": ""
      },
      "interpreterGroup": [
        {
          "class": "org.apache.zeppelin.markdown.Markdown",
          "name": "md"
        }
      ],
      "dependencies": []
    },  
    {
      "id": "2AY6GV7Q3",
      "name": "spark",
      "group": "spark",
      "properties": {
        "spark.cores.max": {
          "name": "",
          "value": "spark.cores.max",
          "type": "number"
        },
        "spark.executor.memory": {
          "name": "spark.executor.memory",
          "value": "1g",
          "type": "string"
        }
      },
      "interpreterGroup": [
        {
          "class": "org.apache.zeppelin.spark.SparkInterpreter",
          "name": "spark"
        },
        {
          "class": "org.apache.zeppelin.spark.SparkSqlInterpreter",
          "name": "sql"
        }
      ],
      "dependencies": [
        {
          "groupArtifactVersion": "com.databricks:spark-csv_2.10:1.3.0"
        }
      ]
    }
  ]
}
        

### Get a registered interpreter setting by the setting id
Description This ```GET``` method returns a registered interpreter setting on the server.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting/[setting ID]```
Success code 200
Fail code 400 if such interpreter setting id does not exist
500 for any other errors
Sample JSON response
{
  "status": "OK",
  "message": "",
  "body": {
    "id": "2AYW25ANY",
    "name": "Markdown setting name",
    "group": "md",
    "properties": {
      "propname": {
        "name": "propname",
        "value": "propvalue",
        "type": "textarea"
      }
    },
    "interpreterGroup": [
      {
        "class": "org.apache.zeppelin.markdown.Markdown",
        "name": "md"
      }
    ],
    "dependencies": [
      {
        "groupArtifactVersion": "groupId:artifactId:version",
        "exclusions": [
          "groupId:artifactId"
        ]
      }
    ]
  }
}
        

### Create a new interpreter setting
Description This ```POST``` method adds a new interpreter setting using a registered interpreter to the server.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting```
Success code 200
Fail code 400 if the input json is empty
500 for any other errors
Sample JSON input
{
  "name": "Markdown setting name",
  "group": "md",
  "properties": {
    "propname": {
      "name": "propname",
      "value": "propvalue",
      "type": "textarea"
  },
  "interpreterGroup": [
    {
      "class": "org.apache.zeppelin.markdown.Markdown",
      "name": "md"
    }
  ],
  "dependencies": [
    {
      "groupArtifactVersion": "groupId:artifactId:version",
      "exclusions": [
        "groupId:artifactId"
      ]
    }
  ]
}
        
Sample JSON response
{
  "status": "CREATED",
  "message": "",
  "body": {
    "id": "2AYW25ANY",
    "name": "Markdown setting name",
    "group": "md",
    "properties": {
      "propname": {
        "name": "propname",
        "value": "propvalue",
        "type": "textarea"
    },
    "interpreterGroup": [
      {
        "class": "org.apache.zeppelin.markdown.Markdown",
        "name": "md"
      }
    ],
    "dependencies": [
      {
        "groupArtifactVersion": "groupId:artifactId:version",
        "exclusions": [
          "groupId:artifactId"
        ]
      }
    ]
  }
}
        

### Update an interpreter setting
Description This ```PUT``` method updates an interpreter setting with new properties.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting/[interpreter ID]```
Success code 200
Fail code 500
Sample JSON input
{
  "name": "Markdown setting name",
  "group": "md",
  "properties": {
    "propname": {
      "name": "propname",
      "value": "Otherpropvalue",
      "type": "textarea"
  },
  "interpreterGroup": [
    {
      "class": "org.apache.zeppelin.markdown.Markdown",
      "name": "md"
    }
  ],
  "dependencies": [
    {
      "groupArtifactVersion": "groupId:artifactId:version",
      "exclusions": [
        "groupId:artifactId"
      ]
    }
  ]
}
        
Sample JSON response
{
  "status": "OK",
  "message": "",
  "body": {
    "id": "2AYW25ANY",
    "name": "Markdown setting name",
    "group": "md",
    "properties": {
      "propname": {
        "name": "propname",
        "value": "Otherpropvalue",
        "type": "textarea"
    },
    "interpreterGroup": [
      {
        "class": "org.apache.zeppelin.markdown.Markdown",
        "name": "md"
      }
    ],
    "dependencies": [
      {
        "groupArtifactVersion": "groupId:artifactId:version",
        "exclusions": [
          "groupId:artifactId"
        ]
      }
    ]
  }
}
        

### Delete an interpreter setting
Description This ```DELETE``` method deletes an given interpreter setting.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting/[interpreter ID]```
Success code 200
Fail code 500
Sample JSON response {"status":"OK"}

### Restart an interpreter
Description This ```PUT``` method restarts the given interpreter id.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/setting/restart/[interpreter ID]```
Success code 200
Fail code 500
Sample JSON input (Optional)
{
  "noteId": "2AVQJVC8N"
}
        
Sample JSON response {"status":"OK"}

### Add a new repository for dependency resolving
Description This ```POST``` method adds new repository.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/repository```
Success code 200
Fail code 500
Sample JSON input
{
  "id": "securecentral",
  "url": "https://repo1.maven.org/maven2",
  "snapshot": false
}
        
Sample JSON response {"status":"OK"}

### Delete a repository for dependency resolving
Description This ```DELETE``` method delete repository with given id.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/repository/[repository ID]```
Success code 200
Fail code 500

### Get available types for property
Description This ```GET``` method returns available types for interpreter property.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/property/types```
Success code 200
Fail code 500
Sample JSON response
{
  "status": "OK",
  "body": [ "textarea", "string", ...
  ]
}            
          

### Get interpreter settings metadata info
Description This ```GET``` method returns interpreter settings metadata info.
URL ```http://[zeppelin-server]:[zeppelin-port]/api/interpreter/metadata/[setting ID]```
Success code 200
Fail code 500