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>