blob: a8f809c3180eb06474adcb8745d48193b1aa310b [file] [log] [blame] [view]
---
layout: page
title: "Apache Zeppelin SDK - Session API"
description: "This page contains Apache Zeppelin SDK - Session API."
group: usage/zeppelin_sdk
---
<!--
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 %}
# Apache Zeppelin SDK - Session API
<div id="toc"></div>
## Overview
Session api is a high level api for zeppelin. There's no zeppelin concept (note, paragraph) in this api. The most important thing is a ZSession which represent a running interpreter process.
It is pretty to create a ZSession and its api is very straightforward, we can see a concret examples below.
## How to use ZSession
It is very easy to create a ZSession, you need to provide ClientConfig, interpreter and also you can customize your ZSession by specificy its interpreter properties.
After you can create ZSession, you need to start it before running any code.
ZSession's lifecycle is under your control, you need to call stop method expclitly, otherwise the interpreter processs will keep running.
{% highlight java %}
ZSession session = null;
try {
ClientConfig clientConfig = new ClientConfig("http://localhost:8080");
Map<String, String> intpProperties = new HashMap<>();
intpProperties.put("spark.master", "local[*]");
session = ZSession.builder()
.setClientConfig(clientConfig)
.setInterpreter("spark")
.setIntpProperties(intpProperties)
.build();
session.start();
System.out.println("Spark Web UI: " + session.getWeburl());
// scala (single result)
ExecuteResult result = session.execute("println(sc.version)");
System.out.println("Spark Version: " + result.getResults().get(0).getData());
// scala (multiple result)
result = session.execute("println(sc.version)\n" +
"val df = spark.createDataFrame(Seq((1,\"a\"), (2,\"b\")))\n" +
"z.show(df)");
// The first result is text output
System.out.println("Result 1: type: " + result.getResults().get(0).getType() +
", data: " + result.getResults().get(0).getData() );
// The second result is table output
System.out.println("Result 2: type: " + result.getResults().get(1).getType() +
", data: " + result.getResults().get(1).getData() );
System.out.println("Spark Job Urls:\n" + StringUtils.join(result.getJobUrls(), "\n"));
// error output
result = session.execute("1/0");
System.out.println("Result status: " + result.getStatus() +
", data: " + result.getResults().get(0).getData());
// pyspark
result = session.execute("pyspark", "df = spark.createDataFrame([(1,'a'),(2,'b')])\n" +
"df.registerTempTable('df')\n" +
"df.show()");
System.out.println("PySpark dataframe: " + result.getResults().get(0).getData());
// matplotlib
result = session.execute("ipyspark", "%matplotlib inline\n" +
"import matplotlib.pyplot as plt\n" +
"plt.plot([1,2,3,4])\n" +
"plt.ylabel('some numbers')\n" +
"plt.show()");
System.out.println("Matplotlib result, type: " + result.getResults().get(0).getType() +
", data: " + result.getResults().get(0).getData());
// sparkr
result = session.execute("r", "df <- as.DataFrame(faithful)\nhead(df)");
System.out.println("Sparkr dataframe: " + result.getResults().get(0).getData());
// spark sql
result = session.execute("sql", "select * from df");
System.out.println("Spark Sql dataframe: " + result.getResults().get(0).getData());
// spark invalid sql
result = session.execute("sql", "select * from unknown_table");
System.out.println("Result status: " + result.getStatus() +
", data: " + result.getResults().get(0).getData());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null) {
try {
session.stop();
} catch (Exception e) {
e.printStackTrace();
}
}
}
{% endhighlight %}
Here's a list of apis of `ZSession`.
{% highlight java %}
public void start() throws Exception
public void start(MessageHandler messageHandler) throws Exception
public void stop() throws Exception
public ExecuteResult execute(String code) throws Exception
public ExecuteResult execute(String subInterpreter,
Map<String, String> localProperties,
String code,
StatementMessageHandler messageHandler) throws Exception
public ExecuteResult submit(String code) throws Exception
public ExecuteResult submit(String subInterpreter,
Map<String, String> localProperties,
String code,
StatementMessageHandler messageHandler) throws Exception
public void cancel(String statementId) throws Exception
public ExecuteResult queryStatement(String statementId) throws Exception
public ExecuteResult waitUntilFinished(String statementId) throws Exception
{% endhighlight %}
## Examples
For more detailed usage of session api, you can check the examples in module `zeppelin-client-examples`
* [SparkExample](https://github.com/apache/zeppelin/blob/master/zeppelin-client-examples/src/main/java/org/apache/zeppelin/client/examples/SparkExample.java)
* [SparkAdvancedExample](https://github.com/apache/zeppelin/blob/master/zeppelin-client-examples/src/main/java/org/apache/zeppelin/client/examples/SparkAdvancedExample.java)
* [FlinkExample](https://github.com/apache/zeppelin/blob/master/zeppelin-client-examples/src/main/java/org/apache/zeppelin/client/examples/FlinkExample.java)
* [FlinkAdvancedExample](https://github.com/apache/zeppelin/blob/master/zeppelin-client-examples/src/main/java/org/apache/zeppelin/client/examples/FlinkAdvancedExample.java)
* [FlinkAdvancedExample2](https://github.com/apache/zeppelin/blob/master/zeppelin-client-examples/src/main/java/org/apache/zeppelin/client/examples/FlinkAdvancedExample2.java)
* [HiveExample](https://github.com/apache/zeppelin/blob/master/zeppelin-client-examples/src/main/java/org/apache/zeppelin/client/examples/HiveExample.java)
* [PythonExample](https://github.com/apache/zeppelin/blob/master/zeppelin-client-examples/src/main/java/org/apache/zeppelin/client/examples/PythonExample.java)
* [RExample](https://github.com/apache/zeppelin/blob/master/zeppelin-client-examples/src/main/java/org/apache/zeppelin/client/examples/RExample.java)