You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by pr...@apache.org on 2020/04/05 05:06:31 UTC
svn commit: r1876141 [17/46] - in /zeppelin/site/docs/0.9.0-SNAPSHOT: ./
development/ development/contribution/ development/helium/ interpreter/
quickstart/ setup/basics/ setup/deployment/ setup/operation/
setup/security/ setup/storage/ usage/display_s...
Modified: zeppelin/site/docs/0.9.0-SNAPSHOT/interpreter/python.html
URL: http://svn.apache.org/viewvc/zeppelin/site/docs/0.9.0-SNAPSHOT/interpreter/python.html?rev=1876141&r1=1876140&r2=1876141&view=diff
==============================================================================
--- zeppelin/site/docs/0.9.0-SNAPSHOT/interpreter/python.html (original)
+++ zeppelin/site/docs/0.9.0-SNAPSHOT/interpreter/python.html Sun Apr 5 05:06:30 2020
@@ -18,9 +18,9 @@
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<!-- Le styles -->
- <link href="/assets/themes/zeppelin/bootstrap/css/bootstrap.css" rel="stylesheet">
- <link href="/assets/themes/zeppelin/css/style.css?body=1" rel="stylesheet" type="text/css">
- <link href="/assets/themes/zeppelin/css/syntax.css" rel="stylesheet" type="text/css" media="screen" />
+ <link href="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/bootstrap/css/bootstrap.css" rel="stylesheet">
+ <link href="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/css/style.css?body=1" rel="stylesheet" type="text/css">
+ <link href="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/css/syntax.css" rel="stylesheet" type="text/css" media="screen" />
<!-- Le fav and touch icons -->
<!-- Update these with your own images
<link rel="shortcut icon" href="images/favicon.ico">
@@ -31,20 +31,20 @@
<!-- Js -->
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
- <script src="/assets/themes/zeppelin/bootstrap/js/bootstrap.min.js"></script>
- <script src="/assets/themes/zeppelin/js/docs.js"></script>
- <script src="/assets/themes/zeppelin/js/anchor.min.js"></script>
- <script src="/assets/themes/zeppelin/js/toc.js"></script>
- <script src="/assets/themes/zeppelin/js/lunr.min.js"></script>
- <script src="/assets/themes/zeppelin/js/search.js"></script>
+ <script src="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/bootstrap/js/bootstrap.min.js"></script>
+ <script src="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/js/docs.js"></script>
+ <script src="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/js/anchor.min.js"></script>
+ <script src="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/js/toc.js"></script>
+ <script src="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/js/lunr.min.js"></script>
+ <script src="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/js/search.js"></script>
<!-- atom & rss feed -->
- <link href="/atom.xml" type="application/atom+xml" rel="alternate" title="Sitewide ATOM Feed">
- <link href="/rss.xml" type="application/rss+xml" rel="alternate" title="Sitewide RSS Feed">
+ <link href="/docs/0.9.0-SNAPSHOT/atom.xml" type="application/atom+xml" rel="alternate" title="Sitewide ATOM Feed">
+ <link href="/docs/0.9.0-SNAPSHOT/rss.xml" type="application/rss+xml" rel="alternate" title="Sitewide RSS Feed">
</head>
<body>
-
+
<div id="menu" class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container navbar-container">
<div class="navbar-header">
@@ -56,10 +56,10 @@
</button>
<div class="navbar-brand">
<a class="navbar-brand-main" href="http://zeppelin.apache.org">
- <img src="/assets/themes/zeppelin/img/zeppelin_logo.png" width="50"
+ <img src="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/img/zeppelin_logo.png" width="50"
style="margin-top: -2px;" alt="I'm zeppelin">
<span style="margin-left: 5px; font-size: 27px;">Zeppelin</span>
- <a class="navbar-brand-version" href=""
+ <a class="navbar-brand-version" href="/docs/0.9.0-SNAPSHOT"
style="font-size: 15px; color: white;"> 0.9.0-SNAPSHOT
</a>
</a>
@@ -71,17 +71,17 @@
<a href="#" data-toggle="dropdown" class="dropdown-toggle">Quick Start <b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="title"><span>Getting Started</span></li>
- <li><a href="/quickstart/install.html">Install</a></li>
- <li><a href="/quickstart/explore_ui.html">Explore UI</a></li>
- <li><a href="/quickstart/tutorial.html">Tutorial</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/quickstart/install.html">Install</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/quickstart/explore_ui.html">Explore UI</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/quickstart/tutorial.html">Tutorial</a></li>
<li role="separator" class="divider"></li>
<li class="title"><span>Run Mode</span></li>
- <li><a href="/quickstart/kubernetes.html">Kubernetes</a></li>
- <li><a href="/quickstart/docker.html">Docker</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/quickstart/kubernetes.html">Kubernetes</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/quickstart/docker.html">Docker</a></li>
<li role="separator" class="divider"></li>
- <li><a href="/quickstart/spark_with_zeppelin.html">Spark with Zeppelin</a></li>
- <li><a href="/quickstart/sql_with_zeppelin.html">SQL with Zeppelin</a></li>
- <li><a href="/quickstart/python_with_zeppelin.html">Python with Zeppelin</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/quickstart/spark_with_zeppelin.html">Spark with Zeppelin</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/quickstart/sql_with_zeppelin.html">SQL with Zeppelin</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/quickstart/python_with_zeppelin.html">Python with Zeppelin</a></li>
</ul>
</li>
@@ -89,41 +89,41 @@
<a href="#" data-toggle="dropdown" class="dropdown-toggle">Usage<b class="caret"></b></a>
<ul class="dropdown-menu scrollable-menu">
<li class="title"><span>Dynamic Form</span></li>
- <li><a href="/usage/dynamic_form/intro.html">What is Dynamic Form?</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/dynamic_form/intro.html">What is Dynamic Form?</a></li>
<li role="separator" class="divider"></li>
<li class="title"><span>Display System</span></li>
- <li><a href="/usage/display_system/basic.html#text">Text Display</a></li>
- <li><a href="/usage/display_system/basic.html#html">HTML Display</a></li>
- <li><a href="/usage/display_system/basic.html#table">Table Display</a></li>
- <li><a href="/usage/display_system/basic.html#network">Network Display</a></li>
- <li><a href="/usage/display_system/angular_backend.html">Angular Display using Backend API</a></li>
- <li><a href="/usage/display_system/angular_frontend.html">Angular Display using Frontend API</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/display_system/basic.html#text">Text Display</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/display_system/basic.html#html">HTML Display</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/display_system/basic.html#table">Table Display</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/display_system/basic.html#network">Network Display</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/display_system/angular_backend.html">Angular Display using Backend API</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/display_system/angular_frontend.html">Angular Display using Frontend API</a></li>
<li role="separator" class="divider"></li>
<li class="title"><span>Interpreter</span></li>
- <li><a href="/usage/interpreter/overview.html">Overview</a></li>
- <li><a href="/usage/interpreter/interpreter_binding_mode.html">Interpreter Binding Mode</a></li>
- <li><a href="/usage/interpreter/user_impersonation.html">User Impersonation</a></li>
- <li><a href="/usage/interpreter/dependency_management.html">Dependency Management</a></li>
- <li><a href="/usage/interpreter/installation.html">Installing Interpreters</a></li>
- <!--<li><a href="/usage/interpreter/dynamic_loading.html">Dynamic Interpreter Loading (Experimental)</a></li>-->
- <li><a href="/usage/interpreter/execution_hooks.html">Execution Hooks (Experimental)</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/interpreter/overview.html">Overview</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/interpreter/interpreter_binding_mode.html">Interpreter Binding Mode</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/interpreter/user_impersonation.html">User Impersonation</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/interpreter/dependency_management.html">Dependency Management</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/interpreter/installation.html">Installing Interpreters</a></li>
+ <!--<li><a href="/docs/0.9.0-SNAPSHOT/usage/interpreter/dynamic_loading.html">Dynamic Interpreter Loading (Experimental)</a></li>-->
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/interpreter/execution_hooks.html">Execution Hooks (Experimental)</a></li>
<li role="separator" class="divider"></li>
<li class="title"><span>Other Features</span></li>
- <li><a href="/usage/other_features/publishing_paragraphs.html">Publishing Paragraphs</a></li>
- <li><a href="/usage/other_features/personalized_mode.html">Personalized Mode</a></li>
- <li><a href="/usage/other_features/customizing_homepage.html">Customizing Zeppelin Homepage</a></li>
- <li><a href="/usage/other_features/notebook_actions.html">Notebook Actions</a></li>
- <li><a href="/usage/other_features/cron_scheduler.html">Cron Scheduler</a></li>
- <li><a href="/usage/other_features/zeppelin_context.html">Zeppelin Context</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/other_features/publishing_paragraphs.html">Publishing Paragraphs</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/other_features/personalized_mode.html">Personalized Mode</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/other_features/customizing_homepage.html">Customizing Zeppelin Homepage</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/other_features/notebook_actions.html">Notebook Actions</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/other_features/cron_scheduler.html">Cron Scheduler</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/other_features/zeppelin_context.html">Zeppelin Context</a></li>
<li role="separator" class="divider"></li>
<li class="title"><span>REST API</span></li>
- <li><a href="/usage/rest_api/interpreter.html">Interpreter API</a></li>
- <li><a href="/usage/rest_api/zeppelin_server.html">Zeppelin Server API</a></li>
- <li><a href="/usage/rest_api/notebook.html">Notebook API</a></li>
- <li><a href="/usage/rest_api/notebook_repository.html">Notebook Repository API</a></li>
- <li><a href="/usage/rest_api/configuration.html">Configuration API</a></li>
- <li><a href="/usage/rest_api/credential.html">Credential API</a></li>
- <li><a href="/usage/rest_api/helium.html">Helium API</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/rest_api/interpreter.html">Interpreter API</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/rest_api/zeppelin_server.html">Zeppelin Server API</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/rest_api/notebook.html">Notebook API</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/rest_api/notebook_repository.html">Notebook Repository API</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/rest_api/configuration.html">Configuration API</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/rest_api/credential.html">Credential API</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/rest_api/helium.html">Helium API</a></li>
</ul>
</li>
@@ -131,37 +131,38 @@
<a href="#" data-toggle="dropdown" class="dropdown-toggle">Setup<b class="caret"></b></a>
<ul class="dropdown-menu scrollable-menu">
<li class="title"><span>Basics</span></li>
- <li><a href="/setup/basics/how_to_build.html">How to Build Zeppelin</a></li>
- <li><a href="/setup/basics/multi_user_support.html">Multi-user Support</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/basics/how_to_build.html">How to Build Zeppelin</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/basics/multi_user_support.html">Multi-user Support</a></li>
<li role="separator" class="divider"></li>
<li class="title"><span>Deployment</span></li>
- <!--<li><a href="/setup/deployment/docker.html">Docker Image for Zeppelin</a></li>-->
- <li><a href="/setup/deployment/spark_cluster_mode.html#spark-standalone-mode">Spark Cluster Mode: Standalone</a></li>
- <li><a href="/setup/deployment/spark_cluster_mode.html#spark-on-yarn-mode">Spark Cluster Mode: YARN</a></li>
- <li><a href="/setup/deployment/spark_cluster_mode.html#spark-on-mesos-mode">Spark Cluster Mode: Mesos</a></li>
- <li><a href="/setup/deployment/flink_and_spark_cluster.html">Zeppelin with Flink, Spark Cluster</a></li>
- <li><a href="/setup/deployment/cdh.html">Zeppelin on CDH</a></li>
- <li><a href="/setup/deployment/virtual_machine.html">Zeppelin on VM: Vagrant</a></li>
+ <!--<li><a href="/docs/0.9.0-SNAPSHOT/setup/deployment/docker.html">Docker Image for Zeppelin</a></li>-->
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/deployment/spark_cluster_mode.html#spark-standalone-mode">Spark Cluster Mode: Standalone</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/deployment/spark_cluster_mode.html#spark-on-yarn-mode">Spark Cluster Mode: YARN</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/deployment/spark_cluster_mode.html#spark-on-mesos-mode">Spark Cluster Mode: Mesos</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/deployment/flink_and_spark_cluster.html">Zeppelin with Flink, Spark Cluster</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/deployment/cdh.html">Zeppelin on CDH</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/deployment/virtual_machine.html">Zeppelin on VM: Vagrant</a></li>
<li role="separator" class="divider"></li>
<li class="title"><span>Security</span></li>
- <li><a href="/setup/security/authentication_nginx.html">HTTP Basic Auth using NGINX</a></li>
- <li><a href="/setup/security/shiro_authentication.html">Shiro Authentication</a></li>
- <li><a href="/setup/security/notebook_authorization.html">Notebook Authorization</a></li>
- <li><a href="/setup/security/datasource_authorization.html">Data Source Authorization</a></li>
- <li><a href="/setup/security/http_security_headers.html">HTTP Security Headers</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/security/authentication_nginx.html">HTTP Basic Auth using NGINX</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/security/shiro_authentication.html">Shiro Authentication</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/security/notebook_authorization.html">Notebook Authorization</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/security/datasource_authorization.html">Data Source Authorization</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/security/http_security_headers.html">HTTP Security Headers</a></li>
<li role="separator" class="divider"></li>
<li class="title"><span>Notebook Storage</span></li>
- <li><a href="/setup/storage/storage.html#notebook-storage-in-local-git-repository">Git Storage</a></li>
- <li><a href="/setup/storage/storage.html#notebook-storage-in-s3">S3 Storage</a></li>
- <li><a href="/setup/storage/storage.html#notebook-storage-in-azure">Azure Storage</a></li>
- <li><a href="/setup/storage/storage.html#notebook-storage-in-zeppelinhub">ZeppelinHub Storage</a></li>
- <li><a href="/setup/storage/storage.html#notebook-storage-in-mongodb">MongoDB Storage</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/storage/storage.html#notebook-storage-in-local-git-repository">Git Storage</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/storage/storage.html#notebook-storage-in-s3">S3 Storage</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/storage/storage.html#notebook-storage-in-azure">Azure Storage</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/storage/storage.html#notebook-storage-in-oss">OSS Storage</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/storage/storage.html#notebook-storage-in-zeppelinhub">ZeppelinHub Storage</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/storage/storage.html#notebook-storage-in-mongodb">MongoDB Storage</a></li>
<li role="separator" class="divider"></li>
<li class="title"><span>Operation</span></li>
- <li><a href="/setup/operation/configuration.html">Configuration</a></li>
- <li><a href="/setup/operation/proxy_setting.html">Proxy Setting</a></li>
- <li><a href="/setup/operation/upgrading.html">Upgrading</a></li>
- <li><a href="/setup/operation/trouble_shooting.html">Trouble Shooting</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/operation/configuration.html">Configuration</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/operation/proxy_setting.html">Proxy Setting</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/operation/upgrading.html">Upgrading</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/operation/trouble_shooting.html">Trouble Shooting</a></li>
</ul>
</li>
@@ -169,58 +170,62 @@
<a href="#" data-toggle="dropdown" class="dropdown-toggle">Interpreter <b class="caret"></b></a>
<ul class="dropdown-menu scrollable-menu">
<li class="title"><span>Interpreters</span></li>
- <li><a href="/usage/interpreter/overview.html">Overview</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/usage/interpreter/overview.html">Overview</a></li>
<li role="separator" class="divider"></li>
- <li><a href="/interpreter/spark.html">Spark</a></li>
- <li><a href="/interpreter/jdbc.html">JDBC</a></li>
- <li><a href="/interpreter/python.html">Python</a></li>
- <li role="separator" class="divider"></li>
- <li><a href="/interpreter/alluxio.html">Alluxio</a></li>
- <li><a href="/interpreter/beam.html">Beam</a></li>
- <li><a href="/interpreter/bigquery.html">BigQuery</a></li>
- <li><a href="/interpreter/cassandra.html">Cassandra</a></li>
- <li><a href="/interpreter/elasticsearch.html">Elasticsearch</a></li>
- <li><a href="/interpreter/flink.html">Flink</a></li>
- <li><a href="/interpreter/geode.html">Geode</a></li>
- <li><a href="/interpreter/groovy.html">Groovy</a></li>
- <li><a href="/interpreter/hazelcastjet.html">Hazelcast Jet</a></li>
- <li><a href="/interpreter/hbase.html">HBase</a></li>
- <li><a href="/interpreter/hdfs.html">HDFS</a></li>
- <li><a href="/interpreter/hive.html">Hive</a></li>
- <li><a href="/interpreter/ignite.html">Ignite</a></li>
- <li><a href="/interpreter/java.html">Java</a></li>
- <li><a href="/interpreter/kylin.html">Kylin</a></li>
- <li><a href="/interpreter/lens.html">Lens</a></li>
- <li><a href="/interpreter/livy.html">Livy</a></li>
- <li><a href="/interpreter/markdown.html">Markdown</a></li>
- <li><a href="/interpreter/neo4j.html">Neo4j</a></li>
- <li><a href="/interpreter/pig.html">Pig</a></li>
- <li><a href="/interpreter/postgresql.html">Postgresql, HAWQ</a></li>
- <li><a href="/interpreter/r.html">R</a></li>
- <li><a href="/interpreter/scalding.html">Scalding</a></li>
- <li><a href="/interpreter/scio.html">Scio</a></li>
- <li><a href="/interpreter/shell.html">Shell</a></li>
- <li><a href="/interpreter/submarine.html">Submarine</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/spark.html">Spark</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/jdbc.html">JDBC</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/python.html">Python</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/r.html">R</a></li>
+ <li role="separator" class="divider"></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/alluxio.html">Alluxio</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/beam.html">Beam</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/bigquery.html">BigQuery</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/cassandra.html">Cassandra</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/elasticsearch.html">Elasticsearch</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/flink.html">Flink</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/geode.html">Geode</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/groovy.html">Groovy</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/hazelcastjet.html">Hazelcast Jet</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/hbase.html">HBase</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/hdfs.html">HDFS</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/hive.html">Hive</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/ignite.html">Ignite</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/java.html">Java</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/jupyter.html">Jupyter</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/kotlin.html">Kotlin</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/kylin.html">Kylin</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/lens.html">Lens</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/livy.html">Livy</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/markdown.html">Markdown</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/mongodb.html">MongoDB</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/neo4j.html">Neo4j</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/pig.html">Pig</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/postgresql.html">Postgresql, HAWQ</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/scalding.html">Scalding</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/scio.html">Scio</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/shell.html">Shell</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/sparql.html">Sparql</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/interpreter/submarine.html">Submarine</a></li>
</ul>
</li>
<li>
<a href="#" data-toggle="dropdown" class="dropdown-toggle">More<b class="caret"></b></a>
<ul class="dropdown-menu scrollable-menu" style="right: 0; left: auto;">
<li class="title"><span>Extending Zeppelin</span></li>
- <li><a href="/development/writing_zeppelin_interpreter.html">Writing Zeppelin Interpreter</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/development/writing_zeppelin_interpreter.html">Writing Zeppelin Interpreter</a></li>
<li role="separator" class="divider"></li>
<li class="title"><span>Helium (Experimental)</span></li>
- <li><a href="/development/helium/overview.html">Overview</a></li>
- <li><a href="/development/helium/writing_application.html">Writing Helium Application</a></li>
- <li><a href="/development/helium/writing_spell.html">Writing Helium Spell</a></li>
- <li><a href="/development/helium/writing_visualization_basic.html">Writing Helium Visualization: Basics</a></li>
- <li><a href="/development/helium/writing_visualization_transformation.html">Writing Helium Visualization: Transformation</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/development/helium/overview.html">Overview</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/development/helium/writing_application.html">Writing Helium Application</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/development/helium/writing_spell.html">Writing Helium Spell</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/development/helium/writing_visualization_basic.html">Writing Helium Visualization: Basics</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/development/helium/writing_visualization_transformation.html">Writing Helium Visualization: Transformation</a></li>
<li role="separator" class="divider"></li>
<li class="title"><span>Contributing to Zeppelin</span></li>
- <li><a href="/setup/basics/how_to_build.html">How to Build Zeppelin</a></li>
- <li><a href="/development/contribution/useful_developer_tools.html">Useful Developer Tools</a></li>
- <li><a href="/development/contribution/how_to_contribute_code.html">How to Contribute (code)</a></li>
- <li><a href="/development/contribution/how_to_contribute_website.html">How to Contribute (website)</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/setup/basics/how_to_build.html">How to Build Zeppelin</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/development/contribution/useful_developer_tools.html">Useful Developer Tools</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/development/contribution/how_to_contribute_code.html">How to Contribute (code)</a></li>
+ <li><a href="/docs/0.9.0-SNAPSHOT/development/contribution/how_to_contribute_website.html">How to Contribute (website)</a></li>
<li role="separator" class="divider"></li>
<li class="title"><span>External Resources</span></li>
<li><a target="_blank" href="https://zeppelin.apache.org/community.html">Mailing List</a></li>
@@ -229,7 +234,7 @@
</ul>
</li>
<li>
- <a href="/search.html" class="nav-search-link">
+ <a href="/docs/0.9.0-SNAPSHOT/search.html" class="nav-search-link">
<span class="fa fa-search nav-search-icon"></span>
</a>
</li>
@@ -241,7 +246,7 @@
<div class="content">
-
+
<!--<div class="hero-unit Python 2 & 3 Interpreter for Apache Zeppelin">
<h1></h1>
</div>
@@ -267,6 +272,33 @@ limitations under the License.
<div id="toc"></div>
+<h2>Overview</h2>
+
+<p>Zeppelin supports python language which is very popular in data analytics and machine learning.</p>
+
+<table class="table-configuration">
+ <tr>
+ <th>Name</th>
+ <th>Class</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td>%python</td>
+ <td>PythonInterpreter</td>
+ <td>Vanilla python interpreter, with least dependencies, only python environment installed is required</td>
+ </tr>
+ <tr>
+ <td>%python.ipython</td>
+ <td>IPythonInterpreter</td>
+ <td>Provide more fancy python runtime via IPython, almost the same experience like Jupyter. It requires more things, but is the recommended interpreter for using python in Zeppelin, see below</td>
+ </tr>
+ <tr>
+ <td>%python.sql</td>
+ <td>PythonInterpreterPandasSql</td>
+ <td>Provide sql capability to query data in Pandas DataFrame via <code>pandasql</code></td>
+ </tr>
+</table>
+
<h2>Configuration</h2>
<table class="table-configuration">
@@ -278,8 +310,8 @@ limitations under the License.
<tr>
<td>zeppelin.python</td>
<td>python</td>
- <td>Path of the already installed Python binary (could be python2 or python3).
- If python is not in your $PATH you can set the absolute directory (example : /usr/bin/python)
+ <td>Path of the installed Python binary (could be python2 or python3).
+ You should set this property explicitly if python is not in your <code>$PATH</code>(example: /usr/bin/python).
</td>
</tr>
<tr>
@@ -287,121 +319,42 @@ limitations under the License.
<td>1000</td>
<td>Max number of dataframe rows to display.</td>
</tr>
+ <tr>
+ <td>zeppelin.python.useIPython</td>
+ <td>true</td>
+ <td>When this property is true, <code>%python</code> would be delegated to <code>%python.ipython</code> if IPython is available, otherwise
+ IPython is only used in <code>%python.ipython</code>.
+ </td>
+ </tr>
</table>
-<h2>Enabling Python Interpreter</h2>
-
-<p>In a notebook, to enable the <strong>Python</strong> interpreter, click on the <strong>Gear</strong> icon and select <strong>Python</strong></p>
-
-<h2>Using the Python Interpreter</h2>
+<h2>Vanilla Python Interpreter (<code>%python</code>)</h2>
-<p>In a paragraph, use <strong><em>%python</em></strong> to select the <strong>Python</strong> interpreter and then input all commands.</p>
+<p>The vanilla python interpreter provides basic python interpreter feature, only python installed is required.</p>
-<p>The interpreter can only work if you already have python installed (the interpreter doesn't bring it own python binaries).</p>
+<h3>Matplotlib integration</h3>
-<p>To access the help, type <strong>help()</strong></p>
-
-<h2>Python environments</h2>
-
-<h3>Default</h3>
-
-<p>By default, PythonInterpreter will use python command defined in <code>zeppelin.python</code> property to run python process.
-The interpreter can use all modules already installed (with pip, easy_install...)</p>
-
-<h3>Conda</h3>
-
-<p><a href="http://conda.pydata.org/">Conda</a> is an package management system and environment management system for python.
-<code>%python.conda</code> interpreter lets you change between environments.</p>
-
-<h4>Usage</h4>
-
-<ul>
-<li><p>get the Conda Infomation: </p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda info
-</code></pre></div></li>
-<li><p>list the Conda environments: </p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda env list
-</code></pre></div></li>
-<li><p>create a conda enviornment: </p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda create --name [ENV NAME]
-</code></pre></div></li>
-<li><p>activate an environment (python interpreter will be restarted): </p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda activate [ENV NAME]
-</code></pre></div></li>
-<li><p>deactivate</p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda deactivate
-</code></pre></div></li>
-<li><p>get installed package list inside the current environment</p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda list
-</code></pre></div></li>
-<li><p>install package</p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda install [PACKAGE NAME]
-</code></pre></div></li>
-<li><p>uninstall package</p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda uninstall [PACKAGE NAME]
-</code></pre></div></li>
-</ul>
-
-<h3>Docker</h3>
-
-<p><code>%python.docker</code> interpreter allows PythonInterpreter creates python process in a specified docker container.</p>
-
-<h4>Usage</h4>
-
-<ul>
-<li><p>activate an environment</p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.docker activate [Repository]
-%python.docker activate [Repository:Tag]
-%python.docker activate [Image Id]
-</code></pre></div></li>
-<li><p>deactivate</p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.docker deactivate
-</code></pre></div></li>
-</ul>
-
-<p><br/>
-Here is an example</p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text"># activate latest tensorflow image as a python environment
-%python.docker activate gcr.io/tensorflow/tensorflow:latest
-</code></pre></div>
-<h2>Using Zeppelin Dynamic Forms</h2>
-
-<p>You can leverage <a href="/usage/dynamic_form/intro.html">Zeppelin Dynamic Form</a> inside your Python code.</p>
-
-<p><strong>Zeppelin Dynamic Form can only be used if py4j Python library is installed in your system. If not, you can install it with <code>pip install py4j</code>.</strong></p>
-
-<p>Example : </p>
+<p>The vanilla python interpreter can display matplotlib figures inline automatically using the <code>matplotlib</code>:</p>
<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="o">%</span><span class="n">python</span>
-<span class="c">### Input form</span>
-<span class="k">print</span> <span class="p">(</span><span class="n">z</span><span class="o">.</span><span class="n">input</span><span class="p">(</span><span class="s">"f1"</span><span class="p">,</span><span class="s">"defaultValue"</span><span class="p">))</span>
-
-<span class="c">### Select form</span>
-<span class="k">print</span> <span class="p">(</span><span class="n">z</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s">"f1"</span><span class="p">,[(</span><span class="s">"o1"</span><span class="p">,</span><span class="s">"1"</span><span class="p">),(</span><span class="s">"o2"</span><span class="p">,</span><span class="s">"2"</span><span class="p">)],</span><span class="s">"2"</span><span class="p">))</span>
-
-<span class="c">### Checkbox form</span>
-<span class="k">print</span><span class="p">(</span><span class="s">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">z</span><span class="o">.</span><span class="n">checkbox</span><span class="p">(</span><span class="s">"f3"</span><span class="p">,</span> <span class="p">[(</span><span class="s">"o1"</span><span class="p">,</span><span class="s">"1"</span><span class="p">),</span> <span class="p">(</span><span class="s">"o2"</span><span class="p">,</span><span class="s">"2"</span><span class="p">)],[</span><span class="s">"1"</span><span class="p">])))</span>
-</code></pre></div>
-<h2>Matplotlib integration</h2>
-<p>The python interpreter can display matplotlib figures inline automatically using the <code>pyplot</code> module:</p>
-<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="o">%</span><span class="n">python</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">])</span>
</code></pre></div>
-<p>This is the recommended method for using matplotlib from within a Zeppelin notebook. The output of this command will by default be converted to HTML by implicitly making use of the <code>%html</code> magic. Additional configuration can be achieved using the builtin <code>z.configure_mpl()</code> method. For example, </p>
+<p>The output of this command will by default be converted to HTML by implicitly making use of the <code>%html</code> magic. Additional configuration can be achieved using the builtin <code>z.configure_mpl()</code> method. For example, </p>
<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="n">z</span><span class="o">.</span><span class="n">configure_mpl</span><span class="p">(</span><span class="n">width</span><span class="o">=</span><span class="mi">400</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s">'svg'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">])</span>
</code></pre></div>
-<p>Will produce a 400x300 image in SVG format, which by default are normally 600x400 and PNG respectively.
-In the future, another option called <code>angular</code> can be used to make it possible to update a plot produced from one paragraph directly from another
-(the output will be <code>%angular</code> instead of <code>%html</code>). However, this feature is already available in the <code>pyspark</code> interpreter.
+<p>Will produce a 400x300 image in SVG format, which by default are normally 600x400 and PNG respectively.
+In the future, another option called <code>angular</code> can be used to make it possible to update a plot produced from one paragraph directly from another
+(the output will be <code>%angular</code> instead of <code>%html</code>). However, this feature is already available in the <code>pyspark</code> interpreter.
More details can be found in the included "Zeppelin Tutorial: Python - matplotlib basic" tutorial notebook. </p>
-<p>If Zeppelin cannot find the matplotlib backend files (which should usually be found in <code>$ZEPPELIN_HOME/interpreter/lib/python</code>) in your <code>PYTHONPATH</code>,
+<p>If Zeppelin cannot find the matplotlib backend files (which should usually be found in <code>$ZEPPELIN_HOME/interpreter/lib/python</code>) in your <code>PYTHONPATH</code>,
then the backend will automatically be set to agg, and the (otherwise deprecated) instructions below can be used for more limited inline plotting.</p>
<p>If you are unable to load the inline backend, use <code>z.show(plt)</code>:</p>
<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="o">%</span><span class="n">python</span>
+
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="p">(</span><span class="o">..</span> <span class="o">..</span><span class="p">)</span>
@@ -410,113 +363,290 @@ then the backend will automatically be s
</code></pre></div>
<p>The <code>z.show()</code> function can take optional parameters to adapt graph dimensions (width and height) as well as output format (png or optionally svg).</p>
<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="o">%</span><span class="n">python</span>
+
<span class="n">z</span><span class="o">.</span><span class="n">show</span><span class="p">(</span><span class="n">plt</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="s">'50px'</span><span class="p">)</span>
<span class="n">z</span><span class="o">.</span><span class="n">show</span><span class="p">(</span><span class="n">plt</span><span class="p">,</span> <span class="n">height</span><span class="o">=</span><span class="s">'150px'</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s">'svg'</span><span class="p">)</span>
</code></pre></div>
-<p><img class="img-responsive" src="/assets/themes/zeppelin/img/docs-img/pythonMatplotlib.png" /></p>
+<p><img class="img-responsive" src="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/img/docs-img/pythonMatplotlib.png" /></p>
+
+<h2>IPython Interpreter (<code>%python.ipython</code>) (recommended)</h2>
+
+<p>IPython is more powerful than the vanilla python interpreter with extra functionality. You can use IPython with Python2 or Python3 which depends on which python you set in <code>zeppelin.python</code>.</p>
+
+<p>For non-anaconda environment </p>
+
+<p><strong>Prerequisites</strong></p>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">- Jupyter `pip install jupyter`
+- grpcio `pip install grpcio`
+- protobuf `pip install protobuf`
+</code></pre></div>
+<p>For anaconda environment (<code>zeppelin.python</code> points to the python under anaconda)</p>
+
+<p><strong>Prerequisites</strong></p>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">- grpcio `pip install grpcio`
+- protobuf `pip install protobuf`
+</code></pre></div>
+<p>In addition to all the basic functions of the vanilla python interpreter, you can use all the IPython advanced features as you use it in Jupyter Notebook.</p>
+
+<p>e.g. </p>
+
+<h3>Use IPython magic</h3>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.ipython
+
+#python help
+range?
+
+#timeit
+%timeit range(100)
+</code></pre></div>
+<h3>Use matplotlib</h3>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.ipython
+
+%matplotlib inline
+import matplotlib.pyplot as plt
+
+print("hello world")
+data=[1,2,3,4]
+plt.figure()
+plt.plot(data)
+</code></pre></div>
+<h3>Colored text output</h3>
+
+<p><img class="img-responsive" src="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/img/docs-img/ipython_error.png" /></p>
+
+<h3>More types of visualization</h3>
+
+<p>e.g. IPython supports hvplot
+<img class="img-responsive" src="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/img/docs-img/ipython_hvplot.png" /></p>
+
+<h3>Better code completion</h3>
+
+<p><img class="img-responsive" src="/docs/0.9.0-SNAPSHOT/assets/themes/zeppelin/img/docs-img/ipython_code_completion.png" /></p>
+
+<p>By default, Zeppelin would use IPython in <code>%python</code> if IPython prerequisites are meet, otherwise it would use vanilla Python interpreter in <code>%python</code>.
+If you don't want to use IPython via <code>%python</code>, then you can set <code>zeppelin.python.useIPython</code> as <code>false</code> in interpreter setting.</p>
<h2>Pandas integration</h2>
-<p>Apache Zeppelin <a href="../usage/display_system/basic.html#table">Table Display System</a> provides built-in data visualization capabilities.
-Python interpreter leverages it to visualize Pandas DataFrames though similar <code>z.show()</code> API,
-same as with <a href="#matplotlib-integration">Matplotlib integration</a>.</p>
+<p>Apache Zeppelin <a href="../usage/display_system/basic.html#table">Table Display System</a> provides built-in data visualization capabilities.
+Python interpreter leverages it to visualize Pandas DataFrames though similar <code>z.show()</code> API, same as with <a href="#matplotlib-integration">Matplotlib integration</a>.</p>
<p>Example:</p>
-<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
+<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="o">%</span><span class="n">python</span>
+
+<span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
<span class="n">rates</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s">"bank.csv"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s">";"</span><span class="p">)</span>
<span class="n">z</span><span class="o">.</span><span class="n">show</span><span class="p">(</span><span class="n">rates</span><span class="p">)</span>
</code></pre></div>
<h2>SQL over Pandas DataFrames</h2>
-<p>There is a convenience <code>%python.sql</code> interpreter that matches Apache Spark experience in Zeppelin and
-enables usage of SQL language to query <a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html">Pandas DataFrames</a> and
+<p>There is a convenience <code>%python.sql</code> interpreter that matches Apache Spark experience in Zeppelin and
+enables usage of SQL language to query <a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html">Pandas DataFrames</a> and
visualization of results though built-in <a href="../usage/display_system/basic.html#table">Table Display System</a>.</p>
-<p><strong>Pre-requests</strong></p>
+<p><strong>Prerequisites</strong></p>
<ul>
<li>Pandas <code>pip install pandas</code></li>
<li>PandaSQL <code>pip install -U pandasql</code></li>
</ul>
-<p>In case default binded interpreter is Python (first in the interpreter list, under the <em>Gear Icon</em>), you can just use it as <code>%sql</code> i.e</p>
+<p>Here's one example:</p>
<ul>
<li><p>first paragraph</p>
-<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
-<span class="n">rates</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s">"bank.csv"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s">";"</span><span class="p">)</span>
+<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="o">%</span><span class="n">python</span>
</code></pre></div></li>
+</ul>
+
+<p>import pandas as pd
+rates = pd.read_csv("bank.csv", sep=";")
+ ```</p>
+
+<ul>
<li><p>next paragraph</p>
-<div class="highlight"><pre><code class="sql language-sql" data-lang="sql"><span class="o">%</span><span class="k">sql</span>
-<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">rates</span> <span class="k">WHERE</span> <span class="n">age</span> <span class="o"><</span> <span class="mi">40</span>
+<div class="highlight"><pre><code class="sql language-sql" data-lang="sql"><span class="o">%</span><span class="n">python</span><span class="p">.</span><span class="k">sql</span>
</code></pre></div></li>
</ul>
-<p>Otherwise it can be referred to as <code>%python.sql</code></p>
+<p>SELECT * FROM rates WHERE age < 40
+ ```</p>
-<h2>IPython Support</h2>
+<h2>Using Zeppelin Dynamic Forms</h2>
-<p>IPython is more powerful than the default python interpreter with extra functionality. You can use IPython with Python2 or Python3 which depends on which python you set <code>zeppelin.python</code>.</p>
+<p>You can leverage <a href="/docs/0.9.0-SNAPSHOT/usage/dynamic_form/intro.html">Zeppelin Dynamic Form</a> inside your Python code.</p>
-<p><strong>Pre-requests</strong></p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">- Jupyter `pip install jupyter`
-- grpcio `pip install grpcio`
-- protobuf `pip install protobuf`
+<p>Example : </p>
+<div class="highlight"><pre><code class="python language-python" data-lang="python"><span class="o">%</span><span class="n">python</span>
+
+<span class="c">### Input form</span>
+<span class="k">print</span><span class="p">(</span><span class="n">z</span><span class="o">.</span><span class="n">input</span><span class="p">(</span><span class="s">"f1"</span><span class="p">,</span><span class="s">"defaultValue"</span><span class="p">))</span>
+
+<span class="c">### Select form</span>
+<span class="k">print</span><span class="p">(</span><span class="n">z</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s">"f2"</span><span class="p">,[(</span><span class="s">"o1"</span><span class="p">,</span><span class="s">"1"</span><span class="p">),(</span><span class="s">"o2"</span><span class="p">,</span><span class="s">"2"</span><span class="p">)],</span><span class="s">"o1"</span><span class="p">))</span>
+
+<span class="c">### Checkbox form</span>
+<span class="k">print</span><span class="p">(</span><span class="s">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">z</span><span class="o">.</span><span class="n">checkbox</span><span class="p">(</span><span class="s">"f3"</span><span class="p">,</span> <span class="p">[(</span><span class="s">"o1"</span><span class="p">,</span><span class="s">"1"</span><span class="p">),</span> <span class="p">(</span><span class="s">"o2"</span><span class="p">,</span><span class="s">"2"</span><span class="p">)],[</span><span class="s">"o1"</span><span class="p">])))</span>
</code></pre></div>
-<p>If you already install anaconda, then you just need to install <code>grpcio</code> as Jupyter is already included in anaconda. For grpcio version >= 1.12.0 you'll also need to install protobuf separately.</p>
+<h2>ZeppelinContext API</h2>
-<p>In addition to all basic functions of the python interpreter, you can use all the IPython advanced features as you use it in Jupyter Notebook.</p>
+<p>Python interpreter create a variable <code>z</code> which represent <code>ZeppelinContext</code> for you. User can use it to do more fancy and complex things in Zeppelin.</p>
-<p>e.g. </p>
+<table class="table-configuration">
+ <tr>
+ <th>API</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td>z.put(key, value)</td>
+ <td>Put object <code>value</code> with identifier <code>key</code> to distributed resource pool of Zeppelin,
+ so that it can be used by other interpreters</td>
+ </tr>
+ <tr>
+ <td>z.get(key)</td>
+ <td>Get object with identifier <code>key</code> from distributed resource pool of Zeppelin</td>
+ </tr>
+ <tr>
+ <td>z.remove(key)</td>
+ <td>Remove object with identifier <code>key</code> from distributed resource pool of Zeppelin</td>
+ </tr>
+ <tr>
+ <td>z.getAsDataFrame(key)</td>
+ <td>Get object with identifier <code>key</code> from distributed resource pool of Zeppelin and converted into pandas dataframe.
+ The object in the distributed resource pool must be table type, e.g. jdbc interpreter result.
+ </td>
+ </tr>
+ <tr>
+ <td>z.angular(name, noteId = None, paragraphId = None)</td>
+ <td>Get the angular object with identifier <code>name</code></td>
+ </tr>
+ <tr>
+ <td>z.angularBind(name, value, noteId = None, paragraphId = None)</td>
+ <td>Bind value to angular object with identifier <code>name</code></td>
+ </tr>
+ <tr>
+ <td>z.angularUnbind(name, noteId = None)</td>
+ <td>Unbind value from angular object with identifier <code>name</code></td>
+ </tr>
+ <tr>
+ <td>z.show(p)</td>
+ <td>Show python object <code>p</code> in Zeppelin, if it is pandas dataframe, it would be displayed in Zeppelin's table format,
+ others will be converted to string</td>
+ </tr>
+ <tr>
+ <td>z.textbox(name, defaultValue="")</td>
+ <td>Create dynamic form Textbox <code>name</code> with defaultValue</td>
+ </tr>
+ <tr>
+ <td>z.select(name, options, defaultValue="")</td>
+ <td>Create dynamic form Select <code>name</code> with options and defaultValue. options should be a list of Tuple(first element is key,
+ the second element is the displayed value) e.g. <code>z.select("f2",[("o1","1"),("o2","2")],"o1")</code></td>
+ </tr>
+ <tr>
+ <td>z.checkbox(name, options, defaultChecked=[])</td>
+ <td>Create dynamic form Checkbox `name` with options and defaultChecked. options should be a list of Tuple(first element is key,
+ the second element is the displayed value) e.g. <code>z.checkbox("f3", [("o1","1"), ("o2","2")],["o1"])</code></td>
+ </tr>
+ <tr>
+ <td>z.noteTextbox(name, defaultValue="")</td>
+ <td>Create note level dynamic form Textbox</td>
+ </tr>
+ <tr>
+ <td>z.noteSelect(name, options, defaultValue="")</td>
+ <td>Create note level dynamic form Select</td>
+ </tr>
+ <tr>
+ <td>z.noteCheckbox(name, options, defaultChecked=[])</td>
+ <td>Create note level dynamic form Checkbox</td>
+ </tr>
+ <tr>
+ <td>z.run(paragraphId)</td>
+ <td>Run paragraph</td>
+ </tr>
+ <tr>
+ <td>z.run(noteId, paragraphId)</td>
+ <td>Run paragraph</td>
+ </tr>
+ <tr>
+ <td>z.runNote(noteId)</td>
+ <td>Run the whole note</td>
+ </tr>
+</table>
-<p>Use IPython magic</p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.ipython
+<h2>Python environments</h2>
-#python help
-range?
+<h3>Default</h3>
-#timeit
-%timeit range(100)
-</code></pre></div>
-<p>Use matplotlib </p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.ipython
+<p>By default, PythonInterpreter will use python command defined in <code>zeppelin.python</code> property to run python process.
+The interpreter can use all modules already installed (with pip, easy_install...)</p>
+<h3>Conda</h3>
-%matplotlib inline
-import matplotlib.pyplot as plt
+<p><a href="http://conda.pydata.org/">Conda</a> is an package management system and environment management system for python.
+<code>%python.conda</code> interpreter lets you change between environments.</p>
-print("hello world")
-data=[1,2,3,4]
-plt.figure()
-plt.plot(data)
-</code></pre></div>
-<p>We also make <code>ZeppelinContext</code> available in IPython Interpreter. You can use <code>ZeppelinContext</code> to create dynamic forms and display pandas DataFrame.</p>
+<h4>Usage</h4>
+
+<ul>
+<li><p>get the Conda Information: </p>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda info
+</code></pre></div></li>
+<li><p>list the Conda environments: </p>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda env list
+</code></pre></div></li>
+<li><p>create a conda enviornment: </p>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda create --name [ENV NAME]
+</code></pre></div></li>
+<li><p>activate an environment (python interpreter will be restarted): </p>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda activate [ENV NAME]
+</code></pre></div></li>
+<li><p>deactivate</p>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda deactivate
+</code></pre></div></li>
+<li><p>get installed package list inside the current environment</p>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda list
+</code></pre></div></li>
+<li><p>install package</p>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda install [PACKAGE NAME]
+</code></pre></div></li>
+<li><p>uninstall package</p>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.conda uninstall [PACKAGE NAME]
+</code></pre></div></li>
+</ul>
-<p>e.g.</p>
+<h3>Docker</h3>
-<p>Create dynamic form</p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">z.input(name='my_name', defaultValue='hello')
-</code></pre></div>
-<p>Show pandas dataframe</p>
-<div class="highlight"><pre><code class="text language-text" data-lang="text">import pandas as pd
-df = pd.DataFrame({'id':[1,2,3], 'name':['a','b','c']})
-z.show(df)
-</code></pre></div>
-<p>By default, we would use IPython in <code>%python.python</code> if IPython is available. Otherwise it would fall back to the original Python implementation.
-If you don't want to use IPython, then you can set <code>zeppelin.python.useIPython</code> as <code>false</code> in interpreter setting.</p>
+<p><code>%python.docker</code> interpreter allows PythonInterpreter creates python process in a specified docker container.</p>
+
+<h4>Usage</h4>
+
+<ul>
+<li><p>activate an environment</p>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.docker activate [Repository]
+%python.docker activate [Repository:Tag]
+%python.docker activate [Image Id]
+</code></pre></div></li>
+<li><p>deactivate</p>
+<div class="highlight"><pre><code class="text language-text" data-lang="text">%python.docker deactivate
+</code></pre></div></li>
+</ul>
+<p><br/>
+Here is an example</p>
+<div class="highlight"><pre><code class="text language-text" data-lang="text"># activate latest tensorflow image as a python environment
+%python.docker activate gcr.io/tensorflow/tensorflow:latest
+</code></pre></div>
<h2>Technical description</h2>
<p>For in-depth technical details on current implementation please refer to <a href="https://github.com/apache/zeppelin/blob/master/python/README.md">python/README.md</a>.</p>
-<h3>Some features not yet implemented in the Python Interpreter</h3>
+<h2>Some features not yet implemented in the vanilla Python interpreter</h2>
<ul>
-<li>Interrupt a paragraph execution (<code>cancel()</code> method) is currently only supported in Linux and MacOs.
-If interpreter runs in another operating system (for instance MS Windows) , interrupt a paragraph will close the whole interpreter.
+<li>Interrupt a paragraph execution (<code>cancel()</code> method) is currently only supported in Linux and MacOs.
+If interpreter runs in another operating system (for instance MS Windows) , interrupt a paragraph will close the whole interpreter.
A JIRA ticket (<a href="https://issues.apache.org/jira/browse/ZEPPELIN-893">ZEPPELIN-893</a>) is opened to implement this feature in a next release of the interpreter.</li>
<li>Progression bar in webUI (<code>getProgress()</code> method) is currently not implemented.</li>
-<li>Code-completion is currently not implemented.</li>
</ul>
</div>
@@ -525,11 +655,27 @@ A JIRA ticket (<a href="https://issues.a
<hr>
<footer>
- <!-- <p>© 2019 The Apache Software Foundation</p>-->
+ <!-- <p>© 2020 The Apache Software Foundation</p>-->
</footer>
</div>
-
+
+
+
+ <script type="text/javascript">
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-45176241-5', 'zeppelin.apache.org');
+ ga('require', 'linkid', 'linkid.js');
+ ga('send', 'pageview');
+
+</script>
+
+
+
</body>
</html>