Added: zeppelin/site/docs/0.9.0/interpreter/cassandra.html
URL:
http://svn.apache.org/viewvc/zeppelin/site/docs/0.9.0/interpreter/cassandra.html?rev=1884775&view=auto
==============================================================================
--- zeppelin/site/docs/0.9.0/interpreter/cassandra.html (added)
+++ zeppelin/site/docs/0.9.0/interpreter/cassandra.html Thu Dec 24 14:36:01 2020
@@ -0,0 +1,1217 @@
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>Apache Zeppelin 0.9.0 Documentation: Cassandra CQL Interpreter for
Apache Zeppelin</title>
+ <meta name="description" content="Apache Cassandra database is the right
choice when you need scalability and high availability without compromising
performance.">
+ <meta name="author" content="The Apache Software Foundation">
+
+ <!-- Enable responsive viewport -->
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+ <!--[if lt IE 9]>
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+
+ <link
href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css"
rel="stylesheet">
+
+ <!-- Le styles -->
+ <link
href="/docs/0.9.0/assets/themes/zeppelin/bootstrap/css/bootstrap.css"
rel="stylesheet">
+ <link href="/docs/0.9.0/assets/themes/zeppelin/css/style.css?body=1"
rel="stylesheet" type="text/css">
+ <link href="/docs/0.9.0/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">
+ <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
+ <link rel="apple-touch-icon" sizes="72x72"
href="images/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="114x114"
href="images/apple-touch-icon-114x114.png">
+ -->
+
+ <!-- Js -->
+ <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
+ <script
src="/docs/0.9.0/assets/themes/zeppelin/bootstrap/js/bootstrap.min.js"></script>
+ <script src="/docs/0.9.0/assets/themes/zeppelin/js/docs.js"></script>
+ <script src="/docs/0.9.0/assets/themes/zeppelin/js/anchor.min.js"></script>
+ <script src="/docs/0.9.0/assets/themes/zeppelin/js/toc.js"></script>
+ <script src="/docs/0.9.0/assets/themes/zeppelin/js/lunr.min.js"></script>
+ <script src="/docs/0.9.0/assets/themes/zeppelin/js/search.js"></script>
+
+ <!-- atom & rss feed -->
+ <link href="/docs/0.9.0/atom.xml" type="application/atom+xml"
rel="alternate" title="Sitewide ATOM Feed">
+ <link href="/docs/0.9.0/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">
+ <button type="button" class="navbar-toggle" data-toggle="collapse"
data-target=".navbar-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <div class="navbar-brand">
+ <a class="navbar-brand-main" href="http://zeppelin.apache.org">
+ <img
src="/docs/0.9.0/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="/docs/0.9.0"
+ style="font-size: 15px; color: white;"> 0.9.0
+ </a>
+ </a>
+ </div>
+ </div>
+ <nav class="navbar-collapse collapse" role="navigation">
+ <ul class="nav navbar-nav">
+ <li>
+ <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="/docs/0.9.0/quickstart/install.html">Install</a></li>
+ <li><a href="/docs/0.9.0/quickstart/explore_ui.html">Explore
UI</a></li>
+ <li><a
href="/docs/0.9.0/quickstart/tutorial.html">Tutorial</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span>Run Mode</span></li>
+ <li><a
href="/docs/0.9.0/quickstart/kubernetes.html">Kubernetes</a></li>
+ <li><a
href="/docs/0.9.0/quickstart/docker.html">Docker</a></li>
+ <li><a href="/docs/0.9.0/quickstart/yarn.html">Yarn</a></li>
+ <li role="separator" class="divider"></li>
+ <li><a
href="/docs/0.9.0/quickstart/spark_with_zeppelin.html">Spark with
Zeppelin</a></li>
+ <li><a
href="/docs/0.9.0/quickstart/sql_with_zeppelin.html">SQL with Zeppelin</a></li>
+ <li><a
href="/docs/0.9.0/quickstart/python_with_zeppelin.html">Python with
Zeppelin</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <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="/docs/0.9.0/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="/docs/0.9.0/usage/display_system/basic.html#text">Text Display</a></li>
+ <li><a
href="/docs/0.9.0/usage/display_system/basic.html#html">HTML Display</a></li>
+ <li><a
href="/docs/0.9.0/usage/display_system/basic.html#table">Table Display</a></li>
+ <li><a
href="/docs/0.9.0/usage/display_system/basic.html#network">Network
Display</a></li>
+ <li><a
href="/docs/0.9.0/usage/display_system/angular_backend.html">Angular Display
using Backend API</a></li>
+ <li><a
href="/docs/0.9.0/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="/docs/0.9.0/usage/interpreter/overview.html">Overview</a></li>
+ <li><a
href="/docs/0.9.0/usage/interpreter/interpreter_binding_mode.html">Interpreter
Binding Mode</a></li>
+ <li><a
href="/docs/0.9.0/usage/interpreter/user_impersonation.html">User
Impersonation</a></li>
+ <li><a
href="/docs/0.9.0/usage/interpreter/dependency_management.html">Dependency
Management</a></li>
+ <li><a
href="/docs/0.9.0/usage/interpreter/installation.html">Installing
Interpreters</a></li>
+ <!--<li><a
href="/docs/0.9.0/usage/interpreter/dynamic_loading.html">Dynamic Interpreter
Loading (Experimental)</a></li>-->
+ <li><a
href="/docs/0.9.0/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="/docs/0.9.0/usage/other_features/publishing_paragraphs.html">Publishing
Paragraphs</a></li>
+ <li><a
href="/docs/0.9.0/usage/other_features/personalized_mode.html">Personalized
Mode</a></li>
+ <li><a
href="/docs/0.9.0/usage/other_features/customizing_homepage.html">Customizing
Zeppelin Homepage</a></li>
+ <li><a
href="/docs/0.9.0/usage/other_features/notebook_actions.html">Notebook
Actions</a></li>
+ <li><a
href="/docs/0.9.0/usage/other_features/cron_scheduler.html">Cron
Scheduler</a></li>
+ <li><a
href="/docs/0.9.0/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="/docs/0.9.0/usage/rest_api/interpreter.html">Interpreter API</a></li>
+ <li><a
href="/docs/0.9.0/usage/rest_api/zeppelin_server.html">Zeppelin Server
API</a></li>
+ <li><a
href="/docs/0.9.0/usage/rest_api/notebook.html">Notebook API</a></li>
+ <li><a
href="/docs/0.9.0/usage/rest_api/notebook_repository.html">Notebook Repository
API</a></li>
+ <li><a
href="/docs/0.9.0/usage/rest_api/configuration.html">Configuration API</a></li>
+ <li><a
href="/docs/0.9.0/usage/rest_api/credential.html">Credential API</a></li>
+ <li><a href="/docs/0.9.0/usage/rest_api/helium.html">Helium
API</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <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="/docs/0.9.0/setup/basics/how_to_build.html">How
to Build Zeppelin</a></li>
+ <li><a
href="/docs/0.9.0/setup/basics/hadoop_integration.html">Hadoop
Integration</a></li>
+ <li><a
href="/docs/0.9.0/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="/docs/0.9.0/setup/deployment/docker.html">Docker Image for
Zeppelin</a></li>-->
+ <li><a
href="/docs/0.9.0/setup/deployment/spark_cluster_mode.html#spark-standalone-mode">Spark
Cluster Mode: Standalone</a></li>
+ <li><a
href="/docs/0.9.0/setup/deployment/spark_cluster_mode.html#spark-on-yarn-mode">Spark
Cluster Mode: YARN</a></li>
+ <li><a
href="/docs/0.9.0/setup/deployment/spark_cluster_mode.html#spark-on-mesos-mode">Spark
Cluster Mode: Mesos</a></li>
+ <li><a
href="/docs/0.9.0/setup/deployment/flink_and_spark_cluster.html">Zeppelin with
Flink, Spark Cluster</a></li>
+ <li><a href="/docs/0.9.0/setup/deployment/cdh.html">Zeppelin
on CDH</a></li>
+ <li><a
href="/docs/0.9.0/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="/docs/0.9.0/setup/security/authentication_nginx.html">HTTP Basic Auth
using NGINX</a></li>
+ <li><a
href="/docs/0.9.0/setup/security/shiro_authentication.html">Shiro
Authentication</a></li>
+ <li><a
href="/docs/0.9.0/setup/security/notebook_authorization.html">Notebook
Authorization</a></li>
+ <li><a
href="/docs/0.9.0/setup/security/datasource_authorization.html">Data Source
Authorization</a></li>
+ <li><a
href="/docs/0.9.0/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="/docs/0.9.0/setup/storage/storage.html#notebook-storage-in-local-git-repository">Git
Storage</a></li>
+ <li><a
href="/docs/0.9.0/setup/storage/storage.html#notebook-storage-in-s3">S3
Storage</a></li>
+ <li><a
href="/docs/0.9.0/setup/storage/storage.html#notebook-storage-in-azure">Azure
Storage</a></li>
+ <li><a
href="/docs/0.9.0/setup/storage/storage.html#notebook-storage-in-oss">OSS
Storage</a></li>
+ <li><a
href="/docs/0.9.0/setup/storage/storage.html#notebook-storage-in-zeppelinhub">ZeppelinHub
Storage</a></li>
+ <li><a
href="/docs/0.9.0/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="/docs/0.9.0/setup/operation/configuration.html">Configuration</a></li>
+ <li><a
href="/docs/0.9.0/setup/operation/proxy_setting.html">Proxy Setting</a></li>
+ <li><a
href="/docs/0.9.0/setup/operation/upgrading.html">Upgrading</a></li>
+ <li><a
href="/docs/0.9.0/setup/operation/trouble_shooting.html">Trouble
Shooting</a></li>
+ </ul>
+ </li>
+
+ <li>
+ <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="/docs/0.9.0/usage/interpreter/overview.html">Overview</a></li>
+ <li role="separator" class="divider"></li>
+ <li><a href="/docs/0.9.0/interpreter/spark.html">Spark</a></li>
+ <li><a href="/docs/0.9.0/interpreter/jdbc.html">JDBC</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/python.html">Python</a></li>
+ <li><a href="/docs/0.9.0/interpreter/r.html">R</a></li>
+ <li role="separator" class="divider"></li>
+ <li><a
href="/docs/0.9.0/interpreter/alluxio.html">Alluxio</a></li>
+ <li><a href="/docs/0.9.0/interpreter/beam.html">Beam</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/bigquery.html">BigQuery</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/cassandra.html">Cassandra</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/elasticsearch.html">Elasticsearch</a></li>
+ <li><a href="/docs/0.9.0/interpreter/flink.html">Flink</a></li>
+ <li><a href="/docs/0.9.0/interpreter/geode.html">Geode</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/groovy.html">Groovy</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/hazelcastjet.html">Hazelcast Jet</a></li>
+ <li><a href="/docs/0.9.0/interpreter/hbase.html">HBase</a></li>
+ <li><a href="/docs/0.9.0/interpreter/hdfs.html">HDFS</a></li>
+ <li><a href="/docs/0.9.0/interpreter/hive.html">Hive</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/ignite.html">Ignite</a></li>
+ <li><a href="/docs/0.9.0/interpreter/java.html">Java</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/jupyter.html">Jupyter</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/kotlin.html">Kotlin</a></li>
+ <li><a href="/docs/0.9.0/interpreter/kylin.html">Kylin</a></li>
+ <li><a href="/docs/0.9.0/interpreter/lens.html">Lens</a></li>
+ <li><a href="/docs/0.9.0/interpreter/livy.html">Livy</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/markdown.html">Markdown</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/mongodb.html">MongoDB</a></li>
+ <li><a href="/docs/0.9.0/interpreter/neo4j.html">Neo4j</a></li>
+ <li><a href="/docs/0.9.0/interpreter/pig.html">Pig</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/postgresql.html">Postgresql, HAWQ</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/scalding.html">Scalding</a></li>
+ <li><a href="/docs/0.9.0/interpreter/scio.html">Scio</a></li>
+ <li><a href="/docs/0.9.0/interpreter/shell.html">Shell</a></li>
+ <li><a
href="/docs/0.9.0/interpreter/sparql.html">Sparql</a></li>
+ <li><a
href="/docs/0.9.0/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="/docs/0.9.0/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="/docs/0.9.0/development/helium/overview.html">Overview</a></li>
+ <li><a
href="/docs/0.9.0/development/helium/writing_application.html">Writing Helium
Application</a></li>
+ <li><a
href="/docs/0.9.0/development/helium/writing_spell.html">Writing Helium
Spell</a></li>
+ <li><a
href="/docs/0.9.0/development/helium/writing_visualization_basic.html">Writing
Helium Visualization: Basics</a></li>
+ <li><a
href="/docs/0.9.0/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="/docs/0.9.0/setup/basics/how_to_build.html">How
to Build Zeppelin</a></li>
+ <li><a
href="/docs/0.9.0/development/contribution/useful_developer_tools.html">Useful
Developer Tools</a></li>
+ <li><a
href="/docs/0.9.0/development/contribution/how_to_contribute_code.html">How to
Contribute (code)</a></li>
+ <li><a
href="/docs/0.9.0/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>
+ <li><a target="_blank"
href="https://cwiki.apache.org/confluence/display/ZEPPELIN/Zeppelin+Home">Apache
Zeppelin Wiki</a></li>
+ <li><a target="_blank"
href="http://stackoverflow.com/questions/tagged/apache-zeppelin">Stackoverflow
Questions about Zeppelin</a></li>
+ </ul>
+ </li>
+ <li>
+ <a href="/docs/0.9.0/search.html" class="nav-search-link">
+ <span class="fa fa-search nav-search-icon"></span>
+ </a>
+ </li>
+ </ul>
+ </nav><!--/.navbar-collapse -->
+ </div>
+ </div>
+
+
+
+ <div class="content">
+
+<!--<div class="hero-unit Cassandra CQL Interpreter for Apache Zeppelin">
+ <h1></h1>
+</div>
+-->
+
+<div class="row">
+ <div class="col-md-12">
+ <!--
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<h1>Cassandra CQL Interpreter for Apache Zeppelin</h1>
+
+<div id="toc"></div>
+
+<table class="table-configuration">
+ <tr>
+ <th>Name</th>
+ <th>Class</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td>%cassandra</td>
+ <td>CassandraInterpreter</td>
+ <td>Provides interpreter for Apache Cassandra CQL query language</td>
+ </tr>
+</table>
+
+<h2>Enabling Cassandra Interpreter</h2>
+
+<p>In a notebook, to enable the <strong>Cassandra</strong> interpreter, click
on the <strong>Gear</strong> icon and select <strong>Cassandra</strong></p>
+
+<p><center>
+ <img
src="/docs/0.9.0/assets/themes/zeppelin/img/docs-img/cassandra-InterpreterBinding.png"
alt="Interpreter Binding"></p>
+
+<p><img
src="/docs/0.9.0/assets/themes/zeppelin/img/docs-img/cassandra-InterpreterSelection.png"
alt="Interpreter Selection">
+ </center></p>
+
+<h2>Using the Cassandra Interpreter</h2>
+
+<p>In a paragraph, use <strong><em>%cassandra</em></strong> to select the
<strong>Cassandra</strong> interpreter and then input all commands.</p>
+
+<p>To access the interactive help, type <strong>HELP;</strong></p>
+
+<p><center>
+ <img
src="/docs/0.9.0/assets/themes/zeppelin/img/docs-img/cassandra-InteractiveHelp.png"
alt="Interactive Help">
+ </center></p>
+
+<h2>Interpreter Commands</h2>
+
+<p>The <strong>Cassandra</strong> interpreter accepts the following
commands</p>
+
+<p><center>
+ <table class="table-configuration">
+ <tr>
+ <th>Command Type</th>
+ <th>Command Name</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td nowrap>Help command</td>
+ <td><code>HELP</code></td>
+ <td>Display the interactive help menu</td>
+ </tr>
+ <tr>
+ <td nowrap>Schema commands</td>
+ <td><code>DESCRIBE KEYSPACE</code>, <code>DESCRIBE CLUSTER</code>,
<code>DESCRIBE TABLES</code> ...</td>
+ <td>Custom commands to describe the Cassandra schema</td>
+ </tr>
+ <tr>
+ <td nowrap>Option commands</td>
+ <td><code>@consistency</code>, <code>@fetchSize</code> ...</td>
+ <td>Inject runtime options to all statements in the paragraph</td>
+ </tr>
+ <tr>
+ <td nowrap>Prepared statement commands</td>
+ <td><code>@prepare</code>, <code>@bind</code>,
<code>@remove_prepared</code></td>
+ <td>Let you register a prepared command and re-use it later by injecting
bound values</td>
+ </tr>
+ <tr>
+ <td nowrap>Native CQL statements</td>
+ <td>All CQL-compatible statements (<code>SELECT</code>,
<code>INSERT</code>, <code>CREATE</code>, ...)</td>
+ <td>All CQL statements are executed directly against the Cassandra
server</td>
+ </tr>
+ </table>
+</center></p>
+
+<h2>CQL statements</h2>
+
+<p>This interpreter is compatible with any CQL statement supported by
Cassandra. Ex:</p>
+<div class="highlight"><pre><code class="sql language-sql"
data-lang="sql"><span class="k">INSERT</span> <span class="k">INTO</span> <span
class="n">users</span><span class="p">(</span><span class="n">login</span><span
class="p">,</span><span class="n">name</span><span class="p">)</span> <span
class="k">VALUES</span><span class="p">(</span><span
class="s1">'jdoe'</span><span class="p">,</span><span
class="s1">'John DOE'</span><span class="p">);</span>
+<span class="k">SELECT</span> <span class="o">*</span> <span
class="k">FROM</span> <span class="n">users</span> <span class="k">WHERE</span>
<span class="n">login</span><span class="o">=</span><span
class="s1">'jdoe'</span><span class="p">;</span>
+</code></pre></div>
+<p>Each statement should be separated by a semi-colon ( <strong>;</strong> )
except the special commands below:</p>
+
+<ol>
+<li><code>@prepare</code></li>
+<li><code>@bind</code></li>
+<li><code>@remove_prepare</code></li>
+<li><code>@consistency</code></li>
+<li><code>@serialConsistency</code></li>
+<li><code>@timestamp</code></li>
+<li><code>@fetchSize</code></li>
+<li><code>@requestTimeOut</code></li>
+</ol>
+
+<p>Multi-line statements as well as multiple statements on the same line are
also supported as long as they are separated by a semi-colon. Ex:</p>
+<div class="highlight"><pre><code class="sql language-sql"
data-lang="sql"><span class="n">USE</span> <span
class="n">spark_demo</span><span class="p">;</span>
+
+<span class="k">SELECT</span> <span class="o">*</span> <span
class="k">FROM</span> <span class="n">albums_by_country</span> <span
class="k">LIMIT</span> <span class="mi">1</span><span class="p">;</span> <span
class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span>
<span class="n">countries</span> <span class="k">LIMIT</span> <span
class="mi">1</span><span class="p">;</span>
+
+<span class="k">SELECT</span> <span class="o">*</span>
+<span class="k">FROM</span> <span class="n">artists</span>
+<span class="k">WHERE</span> <span class="n">login</span><span
class="o">=</span><span class="s1">'jlennon'</span><span
class="p">;</span>
+</code></pre></div>
+<p>Batch statements are supported and can span multiple lines, as well as DDL
(<code>CREATE</code>/<code>ALTER</code>/<code>DROP</code>) statements:</p>
+<div class="highlight"><pre><code class="sql language-sql"
data-lang="sql"><span class="k">BEGIN</span> <span class="n">BATCH</span>
+ <span class="k">INSERT</span> <span class="k">INTO</span> <span
class="n">users</span><span class="p">(</span><span class="n">login</span><span
class="p">,</span><span class="n">name</span><span class="p">)</span> <span
class="k">VALUES</span><span class="p">(</span><span
class="s1">'jdoe'</span><span class="p">,</span><span
class="s1">'John DOE'</span><span class="p">);</span>
+ <span class="k">INSERT</span> <span class="k">INTO</span> <span
class="n">users_preferences</span><span class="p">(</span><span
class="n">login</span><span class="p">,</span><span
class="n">account_type</span><span class="p">)</span> <span
class="k">VALUES</span><span class="p">(</span><span
class="s1">'jdoe'</span><span class="p">,</span><span
class="s1">'BASIC'</span><span class="p">);</span>
+<span class="n">APPLY</span> <span class="n">BATCH</span><span
class="p">;</span>
+
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span
class="n">IF</span> <span class="k">NOT</span> <span class="k">EXISTS</span>
<span class="n">test</span><span class="p">(</span>
+ <span class="k">key</span> <span class="nb">int</span> <span
class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+ <span class="n">value</span> <span class="nb">text</span>
+<span class="p">);</span>
+</code></pre></div>
+<p>CQL statements are <strong>case-insensitive</strong> (except for column
names and values). This means that the following statements are equivalent and
valid:</p>
+<div class="highlight"><pre><code class="sql language-sql"
data-lang="sql"><span class="k">INSERT</span> <span class="k">INTO</span> <span
class="n">users</span><span class="p">(</span><span class="n">login</span><span
class="p">,</span><span class="n">name</span><span class="p">)</span> <span
class="k">VALUES</span><span class="p">(</span><span
class="s1">'jdoe'</span><span class="p">,</span><span
class="s1">'John DOE'</span><span class="p">);</span>
+<span class="k">Insert</span> <span class="k">into</span> <span
class="n">users</span><span class="p">(</span><span class="n">login</span><span
class="p">,</span><span class="n">name</span><span class="p">)</span> <span
class="k">vAlues</span><span class="p">(</span><span
class="s1">'hsue'</span><span class="p">,</span><span
class="s1">'Helen SUE'</span><span class="p">);</span>
+</code></pre></div>
+<p>The complete list of all CQL statements and versions can be found below:</p>
+
+<p><center>
+ <table class="table-configuration">
+ <tr>
+ <th>Cassandra Version</th>
+ <th>Documentation Link</th>
+ </tr>
+ <tr>
+ <td><strong>3.x</strong></td>
+ <td>
+ <a target="_blank"
+
href="https://docs.datastax.com/en/archived/cql/3.3/cql/cqlIntro.html">
+ https://docs.datastax.com/en/archived/cql/3.3/cql/cqlIntro.html
+ </a>
+ </td>
+ </tr><br>
+ <tr>
+ <td><strong>2.2</strong></td>
+ <td>
+ <a target="_blank"
+
href="https://docs.datastax.com/en/archived/cql/3.3/cql/cqlIntro.html">
+ https://docs.datastax.com/en/archived/cql/3.3/cql/cqlIntro.html
+ </a>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>2.1</strong></td>
+ <td>
+ <a target="_blank"
+ href="http://docs.datastax.com/en/cql/3.1/cql/cql_intro_c.html">
+ http://docs.datastax.com/en/cql/3.1/cql/cql<em>intro</em>c.html
+ </a>
+ </td>
+ </tr>
+ </table>
+</center></p>
+
+<h2>Comments in statements</h2>
+
+<p>It is possible to add comments between statements. Single line comments
start with the <strong>hash sign</strong> (<code>#</code>), <strong>double
slashes</strong> (<code>//</code>), <strong>double dash</strong>
(<code>--</code>). Multi-line comments are enclosed between <code>/**</code>
and <code>**/</code>. Ex:</p>
+<div class="highlight"><pre><code class="sql language-sql"
data-lang="sql"><span class="o">#</span> <span class="n">Single</span> <span
class="n">line</span> <span class="k">comment</span> <span
class="n">style</span> <span class="mi">1</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span
class="n">users</span><span class="p">(</span><span class="n">login</span><span
class="p">,</span><span class="n">name</span><span class="p">)</span> <span
class="k">VALUES</span><span class="p">(</span><span
class="s1">'jdoe'</span><span class="p">,</span><span
class="s1">'John DOE'</span><span class="p">);</span>
+
+<span class="o">//</span> <span class="n">Single</span> <span
class="n">line</span> <span class="k">comment</span> <span
class="n">style</span> <span class="mi">2</span>
+
+<span class="o">//</span> <span class="n">Single</span> <span
class="n">line</span> <span class="k">comment</span> <span
class="n">style</span> <span class="mi">3</span>
+
+<span class="cm">/**</span>
+<span class="cm"> Multi line</span>
+<span class="cm"> comments</span>
+<span class="cm"> **/</span>
+<span class="k">Insert</span> <span class="k">into</span> <span
class="n">users</span><span class="p">(</span><span class="n">login</span><span
class="p">,</span><span class="n">name</span><span class="p">)</span> <span
class="k">vAlues</span><span class="p">(</span><span
class="s1">'hsue'</span><span class="p">,</span><span
class="s1">'Helen SUE'</span><span class="p">);</span>
+</code></pre></div>
+<h2>Syntax Validation</h2>
+
+<p>The interpreters is shipped with a built-in syntax validator. This
validator only checks for basic syntax errors.</p>
+
+<p>All CQL-related syntax validation is delegated directly to
<strong>Cassandra</strong></p>
+
+<p>Most of the time, syntax errors are due to <strong>missing
semi-colons</strong> between statements or <strong>typo errors</strong>.</p>
+
+<h2>Schema commands</h2>
+
+<p>To make schema discovery easier and more interactive, the following
commands are supported:</p>
+
+<p><center>
+ <table class="table-configuration">
+ <tr>
+ <th>Command</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><strong>DESCRIBE CLUSTER;</strong></td>
+ <td>Show the current cluster name and its partitioner</td>
+ </tr>
+ <tr>
+ <td><strong>DESCRIBE KEYSPACES;</strong></td>
+ <td>List all existing keyspaces in the cluster and their configuration
(replication factor, durable write ...)</td>
+ </tr>
+ <tr>
+ <td><strong>DESCRIBE TABLES;</strong></td>
+ <td>List all existing keyspaces in the cluster and for each, all the
tables name</td>
+ </tr>
+ <tr>
+ <td><strong>DESCRIBE TYPES;</strong></td>
+ <td>List all existing keyspaces in the cluster and for each, all the
user-defined types name</strong></td>
+ </tr>
+ <tr>
+ <td nowrap><strong>DESCRIBE FUNCTIONS;</strong></td>
+ <td>List all existing keyspaces in the cluster and for each, all the
functions name</td>
+ </tr>
+ <tr>
+ <td nowrap><strong>DESCRIBE AGGREGATES;</strong></td>
+ <td>List all existing keyspaces in the cluster and for each, all the
aggregates name</td>
+ </tr>
+ <tr>
+ <td nowrap><strong>DESCRIBE MATERIALIZED VIEWS;</strong></td>
+ <td>List all existing keyspaces in the cluster and for each, all the
materialized views name</td>
+ </tr>
+ <tr>
+ <td nowrap><strong>DESCRIBE KEYSPACE
<keyspace<em>name>;</strong></td>
+ <td>Describe the given keyspace configuration and all its table details
(name, columns, ...)</td>
+ </tr>
+ <tr>
+ <td nowrap><strong>DESCRIBE TABLE
(<keyspace</em>name>).<table<em>name>;</strong></td>
+ <td>
+ Describe the given table. If the keyspace is not provided, the current
logged in keyspace is used.
+ If there is no logged in keyspace, the default system keyspace is used.
+ If no table is found, an error message is raised
+ </td>
+ </tr>
+ <tr>
+ <td nowrap><strong>DESCRIBE TYPE
(<keyspace</em>name>).<type<em>name>;</strong></td>
+ <td>
+ Describe the given type(UDT). If the keyspace is not provided, the
current logged in keyspace is used.
+ If there is no logged in keyspace, the default system keyspace is used.
+ If no type is found, an error message is raised
+ </td>
+ </tr>
+ <tr>
+ <td nowrap><strong>DESCRIBE FUNCTION
(<keyspace</em>name>).<function<em>name>;</strong></td>
+ <td>Describe the given function. If the keyspace is not provided, the
current logged in keyspace is used.
+ If there is no logged in keyspace, the default system keyspace is
used.
+ If no function is found, an error message is raised
+ </td>
+ </tr>
+ <tr>
+ <td nowrap><strong>DESCRIBE AGGREGATE
(<keyspace</em>name>).<aggregate<em>name>;</strong></td>
+ <td>Describe the given aggregate. If the keyspace is not provided, the
current logged in keyspace is used.
+ If there is no logged in keyspace, the default system keyspace is
used.
+ If no aggregate is found, an error message is raised
+ </td>
+ </tr>
+ <tr>
+ <td nowrap><strong>DESCRIBE MATERIALIZED VIEW
(<keyspace</em>name>).<view_name>;</strong></td>
+ <td>Describe the given view. If the keyspace is not provided, the current
logged in keyspace is used.
+ If there is no logged in keyspace, the default system keyspace is
used.
+ If no view is found, an error message is raised
+ </td>
+ </tr>
+ </table>
+</center></p>
+
+<p>The schema objects (cluster, keyspace, table, type, function and aggregate)
are displayed in a tabular format.
+There is a drop-down menu on the top left corner to expand objects details. On
the top right menu is shown the Icon legend.</p>
+
+<p><center>
+ <img
src="/docs/0.9.0/assets/themes/zeppelin/img/docs-img/cassandra-DescribeSchema.png"
alt="Describe Schema">
+</center></p>
+
+<h2>Runtime Execution Parameters</h2>
+
+<p>Sometimes you want to be able to pass runtime query parameters to your
statements.</p>
+
+<p>Those parameters are not part of the CQL specs and are specific to the
interpreter.</p>
+
+<p>Below is the list of all parameters:</p>
+
+<p><center>
+ <table class="table-configuration">
+ <tr>
+ <th>Parameter</th>
+ <th>Syntax</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td nowrap>Consistency Level</td>
+ <td><strong>@consistency=<em>value</em></strong></td>
+ <td>Apply the given consistency level to all queries in the paragraph</td>
+ </tr>
+ <tr>
+ <td nowrap>Serial Consistency Level</td>
+ <td><strong>@serialConsistency=<em>value</em></strong></td>
+ <td>Apply the given serial consistency level to all queries in the
paragraph</td>
+ </tr>
+ <tr>
+ <td nowrap>Timestamp</td>
+ <td><strong>@timestamp=<em>long value</em></strong></td>
+ <td>
+ Apply the given timestamp to all queries in the paragraph.
+ Please note that timestamp value passed directly in CQL statement will
override this value
+ </td>
+ </tr>
+ <tr>
+ <td nowrap>Fetch Size</td>
+ <td><strong>@fetchSize=<em>integer value</em></strong></td>
+ <td>Apply the given fetch size to all queries in the paragraph</td>
+ </tr>
+ <tr>
+ <td nowrap>Request Time Out</td>
+ <td><strong>@requestTimeOut=<em>integer value</em></strong></td>
+ <td>Apply the given request timeout <strong>in millisecs</strong> to all
queries in the paragraph</td>
+ </tr><br>
+ </table>
+</center></p>
+
+<p>Some parameters only accept restricted values:</p>
+
+<p><center>
+ <table class="table-configuration">
+ <tr>
+ <th>Parameter</th>
+ <th>Possible Values</th>
+ </tr>
+ <tr>
+ <td nowrap>Consistency Level</td>
+ <td><strong>ALL, ANY, ONE, TWO, THREE, QUORUM, LOCAL<em>ONE,
LOCAL</em>QUORUM, EACH<em>QUORUM</strong></td>
+ </tr>
+ <tr>
+ <td nowrap>Serial Consistency Level</td>
+ <td><strong>SERIAL, LOCAL</em>SERIAL</strong></td>
+ </tr>
+ <tr>
+ <td nowrap>Timestamp</td>
+ <td>Any long value</td>
+ </tr>
+ <tr>
+ <td nowrap>Fetch Size</td>
+ <td>Any integer value</td>
+ </tr>
+ </table>
+</center></p>
+
+<blockquote>
+<p>Please note that you should <strong>not</strong> add semi-colon (
<strong>;</strong> ) at the end of each parameter statement</p>
+</blockquote>
+
+<p>Some examples:</p>
+<div class="highlight"><pre><code class="sql language-sql"
data-lang="sql"><span class="k">CREATE</span> <span class="k">TABLE</span>
<span class="n">IF</span> <span class="k">NOT</span> <span
class="k">EXISTS</span> <span class="n">spark_demo</span><span
class="p">.</span><span class="n">ts</span><span class="p">(</span>
+ <span class="k">key</span> <span class="nb">int</span> <span
class="k">PRIMARY</span> <span class="k">KEY</span><span class="p">,</span>
+ <span class="n">value</span> <span class="nb">text</span>
+<span class="p">);</span>
+<span class="k">TRUNCATE</span> <span class="n">spark_demo</span><span
class="p">.</span><span class="n">ts</span><span class="p">;</span>
+
+<span class="o">//</span> <span class="k">Timestamp</span> <span
class="k">in</span> <span class="n">the</span> <span class="n">past</span>
+<span class="o">@</span><span class="k">timestamp</span><span
class="o">=</span><span class="mi">10</span>
+
+<span class="o">//</span> <span class="k">Force</span> <span
class="k">timestamp</span> <span class="n">directly</span> <span
class="k">in</span> <span class="n">the</span> <span class="k">first</span>
<span class="k">insert</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span
class="n">spark_demo</span><span class="p">.</span><span
class="n">ts</span><span class="p">(</span><span class="k">key</span><span
class="p">,</span><span class="n">value</span><span class="p">)</span> <span
class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span
class="p">,</span><span class="s1">'first insert'</span><span
class="p">)</span> <span class="k">USING</span> <span
class="k">TIMESTAMP</span> <span class="mi">100</span><span class="p">;</span>
+
+<span class="o">//</span> <span class="k">Select</span> <span
class="k">some</span> <span class="k">data</span> <span class="k">to</span>
<span class="n">make</span> <span class="n">the</span> <span
class="n">clock</span> <span class="n">turn</span>
+<span class="k">SELECT</span> <span class="o">*</span> <span
class="k">FROM</span> <span class="n">spark_demo</span><span
class="p">.</span><span class="n">albums</span> <span class="k">LIMIT</span>
<span class="mi">100</span><span class="p">;</span>
+
+<span class="o">//</span> <span class="n">Now</span> <span
class="k">insert</span> <span class="k">using</span> <span class="n">the</span>
<span class="k">timestamp</span> <span class="k">parameter</span> <span
class="k">set</span> <span class="k">at</span> <span class="n">the</span> <span
class="n">beginning</span><span class="p">(</span><span
class="mi">10</span><span class="p">)</span>
+<span class="k">INSERT</span> <span class="k">INTO</span> <span
class="n">spark_demo</span><span class="p">.</span><span
class="n">ts</span><span class="p">(</span><span class="k">key</span><span
class="p">,</span><span class="n">value</span><span class="p">)</span> <span
class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span
class="p">,</span><span class="s1">'second insert'</span><span
class="p">);</span>
+
+<span class="o">//</span> <span class="k">Check</span> <span
class="k">for</span> <span class="n">the</span> <span
class="k">result</span><span class="p">.</span> <span class="n">You</span>
<span class="n">should</span> <span class="n">see</span> <span
class="s1">'first insert'</span>
+<span class="k">SELECT</span> <span class="n">value</span> <span
class="k">FROM</span> <span class="n">spark_demo</span><span
class="p">.</span><span class="n">ts</span> <span class="k">WHERE</span> <span
class="k">key</span><span class="o">=</span><span class="mi">1</span><span
class="p">;</span>
+</code></pre></div>
+<p>Some remarks about query parameters:</p>
+
+<blockquote>
+<ol>
+<li><strong>many</strong> query parameters can be set in the same
paragraph</li>
+<li>if the <strong>same</strong> query parameter is set many time with
different values, the interpreter only take into account the first value</li>
+<li>each query parameter applies to <strong>all CQL statements</strong> in the
same paragraph, unless you override the option using plain CQL text (like
forcing timestamp with the <code>USING</code> clause)</li>
+<li>the order of each query parameter with regard to CQL statement does not
matter</li>
+</ol>
+</blockquote>
+
+<h2>Runtime Formatting Parameters</h2>
+
+<p>Sometimes you want to be able to format output of your statement. Cassandra
interpreter allows to specify different parameters as local properties of the
paragraph. Below is the list of all formatting parameters:</p>
+
+<p><center>
+ <table class="table-configuration">
+ <tr>
+ <th>Parameter</th>
+ <th>Syntax</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td nowrap>Output Format</td>
+ <td><strong>outputFormat=<em>value</em></strong></td>
+ <td>Controls, should we output data as CQL literals, or in human-readable
form. Possible values: <strong>cql, human</strong> (default:
<strong>human</strong></td>
+ </tr>
+ <tr>
+ <td nowrap>Locale</td>
+ <td><strong>locale=<em>value</em></strong></td>
+ <td>Locale for formatting of numbers & time-related values. Could be
any locale supported by JVM (default: <strong>en_US</strong>)</td>
+ </tr>
+ <tr>
+ <td nowrap>Timezone</td>
+ <td><strong>timezone=<em>value</em></strong></td>
+ <td>Timezone for formatting of time-related values. Could be any timezone
supported by JVM (default: <strong>UTC</strong>)</td>
+ </tr>
+ <tr>
+ <td nowrap>Float precision</td>
+ <td><strong>floatPrecision=<em>value</em></strong></td>
+ <td>Precision when formatting <tt>float</tt> values. Any positive integer
value, or <code>-1</code> to show everything</td>
+ </tr>
+ <tr>
+ <td nowrap>Double precision</td>
+ <td><strong>doublePrecision=<em>value</em></strong></td>
+ <td>Precision when formatting <tt>double</tt> values. Any positive
integer value, or <code>-1</code> to show everything</td>
+ </tr>
+ <tr>
+ <td nowrap>Decimal precision</td>
+ <td><strong>decimalPrecision=<em>value</em></strong></td>
+ <td>Precision when formatting <tt>decimal</tt> values. Any positive
integer value, or <code>-1</code> to show everything</td>
+ </tr>
+ <tr>
+ <td nowrap>Timestamp Format</td>
+ <td><strong>timestampFormat=<em>value</em></strong></td>
+ <td>Format string for <tt>timestamp</tt> values. Should be valid <a
href="https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html">DateTimeFormatter</a>
pattern</td>
+ </tr>
+ <tr>
+ <td nowrap>Time Format</td>
+ <td><strong>timeFormat=<em>value</em></strong></td>
+ <td>Format string for <tt>time</tt> values. Should be valid <a
href="https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html">DateTimeFormatter</a>
pattern</td>
+ </tr>
+ <tr>
+ <td nowrap>Date Format</td>
+ <td><strong>dateFormat=<em>value</em></strong></td>
+ <td>Format string for <tt>date</tt> values. Should be valid <a
href="https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html">DateTimeFormatter</a>
pattern</td>
+ </tr>
+ </table>
+</center></p>
+
+<p>Some examples:</p>
+<div class="highlight"><pre><code class="sql language-sql"
data-lang="sql"><span class="k">create</span> <span class="k">table</span>
<span class="n">if</span> <span class="k">not</span> <span
class="k">exists</span> <span class="n">zep</span><span class="p">.</span><span
class="n">test_format</span> <span class="p">(</span>
+ <span class="n">id</span> <span class="nb">int</span> <span
class="k">primary</span> <span class="k">key</span><span class="p">,</span>
+ <span class="nb">text</span> <span class="nb">text</span><span
class="p">,</span>
+ <span class="nb">date</span> <span class="nb">date</span><span
class="p">,</span>
+ <span class="k">timestamp</span> <span class="k">timestamp</span><span
class="p">,</span>
+ <span class="n">time</span> <span class="n">time</span><span
class="p">,</span>
+ <span class="n">double</span> <span class="n">double</span><span
class="p">,</span>
+ <span class="nb">float</span> <span class="nb">float</span>
+<span class="p">);</span>
+
+<span class="k">insert</span> <span class="k">into</span> <span
class="n">zep</span><span class="p">.</span><span
class="n">test_format</span><span class="p">(</span><span
class="n">id</span><span class="p">,</span> <span class="nb">text</span><span
class="p">,</span> <span class="nb">date</span><span class="p">,</span> <span
class="k">timestamp</span><span class="p">,</span> <span
class="n">time</span><span class="p">,</span> <span
class="n">double</span><span class="p">,</span> <span
class="nb">float</span><span class="p">)</span>
+ <span class="k">values</span> <span class="p">(</span><span
class="mi">1</span><span class="p">,</span> <span
class="s1">'text'</span><span class="p">,</span> <span
class="s1">'2019-01-29'</span><span class="p">,</span> <span
class="s1">'2020-06-16T23:59:59.123Z'</span><span class="p">,</span>
<span class="s1">'04:05:00.234'</span><span class="p">,</span>
+ <span class="mi">10</span><span class="p">.</span><span
class="mi">0153423453425634653463466346543</span><span class="p">,</span> <span
class="mi">20</span><span class="p">.</span><span
class="mi">0303443</span><span class="p">);</span>
+</code></pre></div><div class="highlight"><pre><code class="text
language-text" data-lang="text">%cassandra(outputFormat=human, locale=de_DE,
floatPrecision=2, doublePrecision=4, timeFormat=hh:mma,
timestampFormat=MM/dd/yy HH:mm, dateFormat="E, d MMM yy",
timezone=Etc/GMT+2)
+select id, double, float, text, date, time, timestamp from zep.test_format;
+</code></pre></div>
+<p>will output data formatted according to settings, including German
locale:</p>
+<div class="highlight"><pre><code class="text language-text"
data-lang="text">id double float text date time timestamp
+1 10,0153 20,03 text Di, 29 Jan 19 04:05AM 06/16/20 21:59
+</code></pre></div>
+<p>while with <code>outputFormat=cql</code>, data is formatted as CQL
literals:</p>
+<div class="highlight"><pre><code class="text language-text"
data-lang="text">id double float text date time
timestamp
+1 10.015342345342564 20.030344 'text' '2019-01-29'
'04:05:00.234000000' '2020-06-17T01:59:59.123+02:00'
+</code></pre></div>
+<h2>Support for Prepared Statements</h2>
+
+<p>For performance reason, it is better to prepare statements before-hand and
reuse them later by providing bound values.</p>
+
+<p>This interpreter provides 3 commands to handle prepared and bound
statements:</p>
+
+<ol>
+<li><strong>@prepare</strong></li>
+<li><strong>@bind</strong></li>
+<li><strong>@remove_prepared</strong></li>
+</ol>
+
+<p>Example:</p>
+<div class="highlight"><pre><code class="text language-text"
data-lang="text">@prepare[statement-name]=...
+
+@bind[statement-name]=âtextâ, 1223, â2015-07-30 12:00:01â, null, true,
[âlist_item1â, âlist_item2â]
+
+@bind[statement-name-with-no-bound-value]
+
+@remove_prepare[statement-name]
+</code></pre></div>
+<h4>@prepare</h4>
+
+<p>You can use the syntax
<em>"@prepare[statement-name]=SELECT..."</em> to create a prepared
statement.
+The <em>statement-name</em> is <strong>mandatory</strong> because the
interpreter prepares the given statement with the Java driver and
+saves the generated prepared statement in an <strong>internal hash
map</strong>, using the provided <em>statement-name</em> as search key.</p>
+
+<blockquote>
+<p>Please note that this internal prepared statement map is shared with
<strong>all notebooks</strong> and <strong>all paragraphs</strong> because
+there is only one instance of the interpreter for Cassandra</p>
+
+<p>If the interpreter encounters <strong>many</strong> <code>@prepare</code>
for the <strong>same <em>statement-name</em> (key)</strong>, only the
<strong>first</strong> statement will be taken into account.</p>
+</blockquote>
+
+<p>Example:</p>
+<div class="highlight"><pre><code class="text language-text"
data-lang="text">@prepare[select]=SELECT * FROM spark_demo.albums LIMIT ?
+
+@prepare[select]=SELECT * FROM spark_demo.artists LIMIT ?
+</code></pre></div>
+<p>For the above example, the prepared statement is <code>SELECT * FROM
spark_demo.albums LIMIT ?</code>.
+<code>SELECT * FROM spark_demo.artists LIMIT ?</code> is ignored because an
entry already exists in the prepared statements map with the key
<em>select</em>.</p>
+
+<p>In the context of <strong>Zeppelin</strong>, a notebook can be scheduled to
be executed at regular interval,
+thus it is necessary to <strong>avoid re-preparing many time the same
statement (considered an anti-pattern)</strong>.</p>
+
+<h4>@bind</h4>
+
+<p>Once the statement is prepared (possibly in a separated
notebook/paragraph). You can bind values to it:</p>
+<div class="highlight"><pre><code class="text language-text"
data-lang="text">@bind[select_first]=10
+</code></pre></div>
+<p>Bound values are not mandatory for the <strong>@bind</strong> statement.
However if you provide bound values, they need to comply to some syntax:</p>
+
+<ul>
+<li>String values should be enclosed between simple quotes
(<strong>'</strong>)</li>
+<li>Date values should be enclosed between simple quotes
(<strong>'</strong>) and respect the formats (full list is in the <a
href="https://docs.datastax.com/en/cql/3.3/cql/cql_reference/timestamp_type_r.html">documentation</a>):
+
+<ol>
+<li>yyyy-MM-dd HH:MM:ss</li>
+<li>yyyy-MM-dd HH:MM:ss.SSS</li>
+<li>yyyy-mm-dd'T'HH:mm:ss.SSSZ</li>
+</ol></li>
+<li><strong>null</strong> is parsed as-is</li>
+<li><strong>boolean</strong> (<code>true</code>|<code>false</code>) are parsed
as-is</li>
+<li>collection values must follow the <strong><a
href="http://docs.datastax.com/en/cql/3.1/cql/cql_using/use_collections_c.html">standard
CQL syntax</a></strong>:
+
+<ul>
+<li>list: ['list<em>item1', 'list</em>item2', ...]</li>
+<li>set: {'set<em>item1', 'set</em>item2', â¦}</li>
+<li>map: {'key1': 'val1', 'key2': 'val2',
â¦}</li>
+</ul></li>
+<li><strong>tuple</strong> values should be enclosed between parenthesis (see
<strong><a
href="http://docs.datastax.com/en/cql/3.1/cql/cql_reference/tupleType.html">Tuple
CQL syntax</a></strong>): ('text', 123, true)</li>
+<li><strong>udt</strong> values should be enclosed between brackets (see
<strong><a
href="http://docs.datastax.com/en/cql/3.1/cql/cql_using/cqlUseUDT.html">UDT CQL
syntax</a></strong>): {stree<em>name: 'Beverly Hills', number: 104,
zip</em>code: 90020, state: 'California', â¦}</li>
+</ul>
+
+<blockquote>
+<p>It is possible to use the @bind statement inside a batch:</p>
+<div class="highlight"><pre><code class="sql language-sql"
data-lang="sql"><span class="k">BEGIN</span> <span class="n">BATCH</span>
+ <span class="o">@</span><span class="n">bind</span><span
class="p">[</span><span class="n">insert_user</span><span
class="p">]</span><span class="o">=</span><span
class="s1">'jdoe'</span><span class="p">,</span><span
class="s1">'John DOE'</span>
+ <span class="k">UPDATE</span> <span class="n">users</span> <span
class="k">SET</span> <span class="n">age</span> <span class="o">=</span> <span
class="mi">27</span> <span class="k">WHERE</span> <span
class="n">login</span><span class="o">=</span><span
class="s1">'hsue'</span><span class="p">;</span>
+<span class="n">APPLY</span> <span class="n">BATCH</span><span
class="p">;</span>
+</code></pre></div></blockquote>
+
+<h4>@remove_prepare</h4>
+
+<p>To avoid for a prepared statement to stay forever in the prepared statement
map, you can use the
+<strong>@remove_prepare[statement-name]</strong> syntax to remove it.
+Removing a non-existing prepared statement yields no error.</p>
+
+<h2>Using Dynamic Forms</h2>
+
+<p>Instead of hard-coding your CQL queries, it is possible to use
<strong>[Zeppelin dynamic form]</strong> syntax to inject simple value or
multiple choices forms.</p>
+
+<p>The legacy mustache syntax ( <strong>{{ }}</strong> ) to bind input text
and select form is still supported but is deprecated and will be removed in
future releases.</p>
+
+<blockquote>
+<p><strong>Legacy</strong>
+The syntax for simple parameter is: <strong>{{input_Label=default
value}}</strong>. The default value is mandatory because the first time the
paragraph is executed,
+we launch the CQL query before rendering the form so at least one value should
be provided.</p>
+
+<p>The syntax for multiple choices parameter is: <strong>{{input_Label=value1
| value2 | ⦠| valueN }}</strong>. By default the first choice is used for
CQL query
+the first time the paragraph is executed.</p>
+</blockquote>
+
+<p>Example:</p>
+<div class="highlight"><pre><code class="text language-text"
data-lang="text">#Secondary index on performer style
+SELECT name, country, performer
+FROM spark_demo.performers
+WHERE name='${performer=Sheryl Crow|Doof|Fanfarlo|Los Paranoia}'
+AND styles CONTAINS '${style=Rock}';
+</code></pre></div>
+<p>In the above example, the first CQL query will be executed for
<code>performer='Sheryl Crow' AND style='Rock'</code>.
+For subsequent queries, you can change the value directly using the form.</p>
+
+<blockquote>
+<p>Please note that we enclosed the <strong>${ }</strong> block between simple
quotes ( <strong>'</strong> ) because Cassandra expects a String here.
+We could have also use the <strong>${style='Rock'}</strong> syntax but
this time, the value displayed on the form is
<strong><em>'Rock'</em></strong> and not
<strong><em>Rock</em></strong>.</p>
+</blockquote>
+
+<p>It is also possible to use dynamic forms for <strong>prepared
statements</strong>:</p>
+<div class="highlight"><pre><code class="text language-text"
data-lang="text">@bind[select]=='${performer=Sheryl Crow|Doof|Fanfarlo|Los
Paranoia}', '${style=Rock}'
+</code></pre></div>
+<h2>Shared states</h2>
+
+<p>It is possible to execute many paragraphs in parallel. However, at the
back-end side, we're still using synchronous queries.
+<em>Asynchronous execution</em> is only possible when it is possible to return
a <code>Future</code> value in the <code>InterpreterResult</code>.
+It may be an interesting proposal for the <strong>Zeppelin</strong>
project.</p>
+
+<p>Recently, <strong>Zeppelin</strong> allows you to choose the level of
isolation for your interpreters (see <strong>[Interpreter Binding
Mode]</strong> ).</p>
+
+<p>Long story short, you have 3 available bindings:</p>
+
+<ul>
+<li><strong>shared</strong> : <em>same JVM</em> and <em>same Interpreter
instance</em> for all notes</li>
+<li><strong>scoped</strong> : <em>same JVM</em> but <em>different Interpreter
instances</em>, one for each note</li>
+<li><strong>isolated</strong>: <em>different JVM</em> running a <em>single
Interpreter instance</em>, one JVM for each note</li>
+</ul>
+
+<p>Using the <strong>shared</strong> binding, the same
<code>com.datastax.driver.core.Session</code> object is used for
<strong>all</strong> notes and paragraphs.
+Consequently, if you use the <code>USE keyspace_name;</code> statement to log
into a keyspace, it will change the keyspace for
+<strong>all current users</strong> of the <strong>Cassandra</strong>
interpreter because we only create 1
<code>com.datastax.driver.core.Session</code> object
+per instance of <strong>Cassandra</strong> interpreter.</p>
+
+<p>The same remark does apply to the <strong>prepared statement hash
map</strong>, it is shared by <strong>all users</strong> using the same
instance of <strong>Cassandra</strong> interpreter.</p>
+
+<p>When using <strong>scoped</strong> binding, in the <em>same JVM</em>
<strong>Zeppelin</strong> will create multiple instances of the Cassandra
interpreter, thus
+multiple <code>com.datastax.driver.core.Session</code> objects. <strong>Beware
of resource and memory usage using this binding !</strong> </p>
+
+<p>The <strong>isolated</strong> mode is the most extreme and will create as
many JVM/<code>com.datastax.driver.core.Session</code> object as there are
distinct notes.</p>
+
+<h2>Interpreter Configuration</h2>
+
+<p>To configure the <strong>Cassandra</strong> interpreter, go to the
<strong>Interpreter</strong> menu and scroll down to change the parameters.
+The <strong>Cassandra</strong> interpreter is using the official <strong><a
href="https://docs.datastax.com/en/developer/java-driver/latest/">Datastax Java
Driver for Apache Cassandra</a>®</strong> and most of the parameters are used
to configure the Java driver</p>
+
+<p>Below are the configuration parameters supported by interpreter and their
default values.</p>
+
+<p><table class="table-configuration">
+ <tr>
+ <th>Property Name</th>
+ <th>Description</th>
+ <th>Default Value</th>
+ </tr>
+ <tr>
+ <td><code>cassandra.cluster</code></td>
+ <td>Name of the Cassandra cluster to connect to</td>
+ <td>Test Cluster</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.compression.protocol</code></td>
+ <td>On wire compression. Possible values are: <code>NONE</code>,
<code>SNAPPY</code>, <code>LZ4</code></td>
+ <td><code>NONE</code></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.credentials.username</code></td>
+ <td>If security is enable, provide the login</td>
+ <td>none</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.credentials.password</code></td>
+ <td>If security is enable, provide the password</td>
+ <td>none</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.hosts</code></td>
+ <td>
+ Comma separated Cassandra hosts (DNS name or IP address).
+ <br/>
+ Ex: <code>192.168.0.12,node2,node3</code>
+ </td>
+ <td><code>localhost</code></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.interpreter.parallelism</code></td>
+ <td>Number of concurrent paragraphs(queries block) that can be
executed</td>
+ <td>10</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.keyspace</code></td>
+ <td>
+ Default keyspace to connect to.
+ <strong>
+ It is strongly recommended to let the default value
+ and prefix the table name with the actual keyspace
+ in all of your queries
+ </strong>
+ </td>
+ <td><code>system</code></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.load.balancing.policy</code></td>
+ <td>
+ Load balancing policy. Default =
<code>DefaultLoadBalancingPolicy</code>
+ To Specify your own policy, provide the <em>fully qualify class name
(FQCN)</em> of your policy.
+ At runtime the driver will instantiate the policy using class name.
+ </td>
+ <td>DEFAULT</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.max.schema.agreement.wait.second</code></td>
+ <td>Cassandra max schema agreement wait in second</td>
+ <td>10</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.pooling.connection.per.host.local</code></td>
+ <td>Protocol V3 and above default = 1</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.pooling.connection.per.host.remote</code></td>
+ <td>Protocol V3 and above default = 1</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.pooling.heartbeat.interval.seconds</code></td>
+ <td>Cassandra pool heartbeat interval in secs</td>
+ <td>30</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.pooling.max.request.per.connection</code></td>
+ <td>Protocol V3 and above default = 1024</td>
+ <td>1024</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.pooling.pool.timeout.millisecs</code></td>
+ <td>Cassandra pool time out in millisecs</td>
+ <td>5000</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.protocol.version</code></td>
+ <td>Cassandra binary protocol version (<code>V3</code>, <code>V4</code>,
...)</td>
+ <td><code>DEFAULT</code> (detected automatically)</td>
+ </tr>
+ <tr>
+ <td>cassandra.query.default.consistency</td>
+ <td>
+ Cassandra query default consistency level
+ <br/>
+ Available values: <code>ONE</code>, <code>TWO</code>,
<code>THREE</code>, <code>QUORUM</code>, <code>LOCAL_ONE</code>,
<code>LOCAL_QUORUM</code>, <code>EACH_QUORUM</code>, <code>ALL</code>
+ </td>
+ <td><code>ONE</code></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.query.default.fetchSize</code></td>
+ <td>Cassandra query default fetch size</td>
+ <td>5000</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.query.default.serial.consistency</code></td>
+ <td>
+ Cassandra query default serial consistency level
+ <br/>
+ Available values: <code>SERIAL</code>, <code>LOCAL_SERIAL</code>
+ </td>
+ <td><code>SERIAL</code></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.reconnection.policy</code></td>
+ <td>
+ Cassandra Reconnection Policy.
+ Default = <code>ExponentialReconnectionPolicy</code>
+ To Specify your own policy, provide the <em>fully qualify class name
(FQCN)</em> of your policy.
+ At runtime the driver will instantiate the policy using class name.
+ </td>
+ <td>DEFAULT</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.retry.policy</code></td>
+ <td>
+ Cassandra Retry Policy.
+ Default = <code>DefaultRetryPolicy</code>
+ To Specify your own policy, provide the <em>fully qualify class name
(FQCN)</em> of your policy.
+ At runtime the driver will instantiate the policy using class name.
+ </td>
+ <td>DEFAULT</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.socket.connection.timeout.millisecs</code></td>
+ <td>Cassandra socket default connection timeout in millisecs</td>
+ <td>500</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.socket.read.timeout.millisecs</code></td>
+ <td>Cassandra socket read timeout in millisecs</td>
+ <td>12000</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.socket.tcp.no_delay</code></td>
+ <td>Cassandra socket TCP no delay</td>
+ <td>true</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.speculative.execution.policy</code></td>
+ <td>
+ Cassandra Speculative Execution Policy.
+ Default = <code>NoSpeculativeExecutionPolicy</code>
+ To Specify your own policy, provide the <em>fully qualify class name
(FQCN)</em> of your policy.
+ At runtime the driver will instantiate the policy using class name.
+ </td>
+ <td>DEFAULT</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.ssl.enabled</code></td>
+ <td>
+ Enable support for connecting to the Cassandra configured with SSL.
+ To connect to Cassandra configured with SSL use <strong>true</strong>
+ and provide a truststore file and password with following options.
+ </td>
+ <td>false</td>
+ </tr>
+ <tr>
+ <td><code>cassandra.ssl.truststore.path</code></td>
+ <td>
+ Filepath for the truststore file to use for connection to Cassandra
with SSL.
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.ssl.truststore.password</code></td>
+ <td>
+ Password for the truststore file to use for connection to Cassandra
with SSL.
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.format.output</code></td>
+ <td>Output format for data - strict CQL (<code>cql</code>), or
human-readable (<code>human</code>)</td>
+ <td><code>human</code></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.format.locale</code></td>
+ <td>Which locale to use for output (any locale supported by JVM could be
specified)</td>
+ <td><code>en_US</code></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.format.timezone</code></td>
+ <td>For which timezone format time/date-related types (any timezone
supported by JVM could be specified)</td>
+ <td><code>UTC</code></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.format.timestamp</code></td>
+ <td>Format string for <code>timestamp</code> columns (any valid <a
href="https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html">DateTimeFormatter</a>
pattern could be used)</td>
+ <td><code>yyyy-MM-dd'T'HH:mm:ss.SSSXXX</code></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.format.time</code></td>
+ <td>Format string for <code>time</code> columns (any valid <a
href="https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html">DateTimeFormatter</a>
pattern could be used)</td>
+ <td><code>HH:mm:ss.SSS</code></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.format.date</code></td>
+ <td>Format string for <code>date</code> columns (any valid <a
href="https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html">DateTimeFormatter</a>
pattern could be used)</td>
+ <td><code>yyyy-MM-dd</code></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.format.float_precision</code></td>
+ <td>Precision when formatting values of <code>float</code> type</td>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.format.double_precision</code></td>
+ <td>Precision when formatting values of <code>double</code> type</td>
+ <td><code>12</code></td>
+ </tr>
+ <tr>
+ <td><code>cassandra.format.decimal_precision</code></td>
+ <td>Precision when formatting values of <code>decimal</code> type</td>
+ <td><code>-1</code> (show everything)</td>
+ </tr>
+ </table></p>
+
+<p>Besides these parameters, it's also possible to set other driver
parameters by adding them into interpreter configuration. The configuration
key should have full form with <code>datastax-java-driver</code> prefix, as <a
href="https://docs.datastax.com/en/developer/java-driver/latest/manual/core/configuration/">described
in documentation</a>. For example, to specify 5 seconds request timeout, you
can use <code>datastax-java-driver.basic.request.timeout</code> with value of
<code>5 seconds</code>. Full list of available configuration options is <a
href="https://docs.datastax.com/en/developer/java-driver/latest/manual/core/configuration/reference/">available
in documentation</a>. Additional options may override the options that are
specified by the interpreter's configuration parameters.</p>
+
+<h2>Change Log</h2>
+
+<p><strong>4.0</strong> <em>(Zeppelin 0.9.0)</em> :</p>
+
+<ul>
+<li>Refactor to use unified Java driver 4.7 (<a
href="https://issues.apache.org/jira/browse/ZEPPELIN-4378">ZEPPELIN-4378</a>:
+
+<ul>
+<li>changes in configuration were necessary, as new driver has different
architecture, and configuration options</li>
+<li>interpreter got support for DSE-specific data types, and other
extensions</li>
+<li>support for <code>@retryPolicy</code> is removed, as only single retry
policy is shipped with driver</li>
+<li>allow to specify any configuration option of Java driver</li>
+<li>dropped support for Cassandra 1.2 & 2.0, that isn't supported by
driver anymore</li>
+</ul></li>
+<li>added support for formatting options, both interpreter & cell
level</li>
+</ul>
+
+<p><strong>3.1</strong> <em>(Zeppelin 0.9.0)</em> :</p>
+
+<ul>
+<li>Upgrade Java driver to 3.7.2 (<a
href="https://issues.apache.org/jira/browse/ZEPPELIN-4331">ZEPPELIN-4331</a>;</li>
+</ul>
+
+<p><strong>3.0</strong> <em>(Zeppelin 0.9.0)</em> :</p>
+
+<ul>
+<li>Update documentation</li>
+<li>Update interactive documentation</li>
+<li>Add support for binary protocol <strong>V4</strong></li>
+<li>Implement new <code>@requestTimeOut</code> runtime option</li>
+<li>Upgrade Java driver version to <strong>3.0.1</strong></li>
+<li>Allow interpreter to add dynamic forms programmatically when using
FormType.SIMPLE</li>
+<li>Allow dynamic form using default Zeppelin syntax</li>
+<li>Fixing typo on FallThroughPolicy</li>
+<li>Look for data in AngularObjectRegistry before creating dynamic form</li>
+<li>Add missing support for <code>ALTER</code> statements</li>
+</ul>
+
+<p><strong>2.0</strong> <em>(Zeppelin 0.9.0)</em> :</p>
+
+<ul>
+<li>Update help menu and add changelog</li>
+<li>Add Support for <strong>User Defined Functions</strong>, <strong>User
Defined Aggregates</strong> and <strong>Materialized Views</strong></li>
+<li>Upgrade Java driver version to <strong>3.0.0-rc1</strong></li>
+</ul>
+
+<p><strong>1.0</strong> <em>(Zeppelin 0.5.5-incubating)</em> :</p>
+
+<ul>
+<li>Initial version</li>
+</ul>
+
+<h2>Bugs & Contacts</h2>
+
+<p>If you encounter a bug for this interpreter, please create a <strong><a
href="https://issues.apache.org/jira/browse/ZEPPELIN">JIRA</a></strong>
ticket.</p>
+
+<p><a href="../usage/dynamic_form/intro.html">Zeppelin Dynamic Form</a>
+<a href="../usage/interpreter/interpreter_binding_mode.html">Interpreter
Binding Mode</a></p>
+
+ </div>
+</div>
+
+
+ <hr>
+ <footer>
+ <!-- <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>
+
Propchange: zeppelin/site/docs/0.9.0/interpreter/cassandra.html
------------------------------------------------------------------------------
svn:executable = *