Added: zeppelin/site/docs/0.6.0/interpreter/alluxio.html
URL:
http://svn.apache.org/viewvc/zeppelin/site/docs/0.6.0/interpreter/alluxio.html?rev=1751605&view=auto
==============================================================================
--- zeppelin/site/docs/0.6.0/interpreter/alluxio.html (added)
+++ zeppelin/site/docs/0.6.0/interpreter/alluxio.html Wed Jul 6 06:25:29 2016
@@ -0,0 +1,439 @@
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>Alluxio Interpreter</title>
+ <meta name="description" content="Alluxio Interpreter">
+ <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.6.0/assets/themes/zeppelin/bootstrap/css/bootstrap.css"
rel="stylesheet">
+ <link href="/docs/0.6.0/assets/themes/zeppelin/css/style.css?body=1"
rel="stylesheet" type="text/css">
+ <link href="/docs/0.6.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.6.0/assets/themes/zeppelin/bootstrap/js/bootstrap.min.js"></script>
+ <script src="/docs/0.6.0/assets/themes/zeppelin/js/docs.js"></script>
+ <script src="/docs/0.6.0/assets/themes/zeppelin/js/anchor.min.js"></script>
+ <script src="/docs/0.6.0/assets/themes/zeppelin/js/toc.js"></script>
+
+ <!-- atom & rss feed -->
+ <link href="/docs/0.6.0/atom.xml" type="application/atom+xml"
rel="alternate" title="Sitewide ATOM Feed">
+ <link href="/docs/0.6.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">
+ <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>
+ <a class="navbar-brand" href="/docs/0.6.0">
+ <img src="/assets/themes/zeppelin/img/zeppelin_logo.png"
width="50" alt="I'm zeppelin">
+ <span style="vertical-align:middle">Zeppelin</span>
+ <span style="vertical-align:baseline"><small>0.6.0</small></span>
+ </a>
+ </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><a href="/docs/0.6.0/index.html">What is Apache Zeppelin
?</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Getting Started</b><span></li>
+ <li><a href="/docs/0.6.0/install/install.html">Install</a></li>
+ <li><a
href="/docs/0.6.0/install/install.html#apache-zeppelin-configuration">Configuration</a></li>
+ <li><a
href="/docs/0.6.0/quickstart/explorezeppelinui.html">Explore Zeppelin
UI</a></li>
+ <li><a
href="/docs/0.6.0/quickstart/tutorial.html">Tutorial</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Basic Feature Guide</b><span></li>
+ <li><a href="/docs/0.6.0/manual/dynamicform.html">Dynamic
Form</a></li>
+ <li><a href="/docs/0.6.0/manual/publish.html">Publish your
Paragraph</a></li>
+ <li><a
href="/docs/0.6.0/manual/notebookashomepage.html">Customize Zeppelin
Homepage</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>More</b><span></li>
+ <li><a
href="/docs/0.6.0/install/virtual_machine.html">Zeppelin on Vagrant VM</a></li>
+ <li><a href="/docs/0.6.0/install/upgrade.html">Upgrade
Zeppelin Version</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><a
href="/docs/0.6.0/manual/interpreters.html">Overview</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Usage</b><span></li>
+ <li><a
href="/docs/0.6.0/manual/interpreterinstallation.html">Interpreter
Installation</a></li>
+ <!--<li><a
href="/docs/0.6.0/manual/dynamicinterpreterload.html">Dynamic Interpreter
Loading</a></li>-->
+ <li><a
href="/docs/0.6.0/manual/dependencymanagement.html">Interpreter Dependency
Management</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Available
Interpreters</b><span></li>
+ <li><a
href="/docs/0.6.0/interpreter/alluxio.html">Alluxio</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/cassandra.html">Cassandra</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/elasticsearch.html">Elasticsearch</a></li>
+ <li><a href="/docs/0.6.0/interpreter/flink.html">Flink</a></li>
+ <li><a href="/docs/0.6.0/interpreter/geode.html">Geode</a></li>
+ <li><a href="/docs/0.6.0/interpreter/hbase.html">HBase</a></li>
+ <li><a href="/docs/0.6.0/interpreter/hdfs.html">HDFS</a></li>
+ <li><a href="/docs/0.6.0/interpreter/hive.html">Hive</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/ignite.html">Ignite</a></li>
+ <li><a href="/docs/0.6.0/interpreter/jdbc.html">JDBC</a></li>
+ <li><a href="/docs/0.6.0/interpreter/lens.html">Lens</a></li>
+ <li><a href="/docs/0.6.0/interpreter/livy.html">Livy</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/markdown.html">Markdown</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/python.html">Python</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/postgresql.html">Postgresql, HAWQ</a></li>
+ <li><a href="/docs/0.6.0/interpreter/r.html">R</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/scalding.html">Scalding</a></li>
+ <li><a href="/docs/0.6.0/pleasecontribute.html">Shell</a></li>
+ <li><a href="/docs/0.6.0/interpreter/spark.html">Spark</a></li>
+ </ul>
+ </li>
+ <li>
+ <a href="#" data-toggle="dropdown"
class="dropdown-toggle">Display System <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li class="title"><span><b>Basic Display System</b><span></li>
+ <li><a
href="/docs/0.6.0/displaysystem/basicdisplaysystem.html#text">Text</a></li>
+ <li><a
href="/docs/0.6.0/displaysystem/basicdisplaysystem.html#html">Html</a></li>
+ <li><a
href="/docs/0.6.0/displaysystem/basicdisplaysystem.html#table">Table</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Angular API</b><span></li>
+ <li><a
href="/docs/0.6.0/displaysystem/back-end-angular.html">Angular (backend
API)</a></li>
+ <li><a
href="/docs/0.6.0/displaysystem/front-end-angular.html">Angular (frontend
API)</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><b>Notebook Storage</b><span></li>
+ <li><a
href="/docs/0.6.0/storage/storage.html#notebook-storage-in-local-git-repository">Git
Storage</a></li>
+ <li><a
href="/docs/0.6.0/storage/storage.html#notebook-storage-in-s3">S3
Storage</a></li>
+ <li><a
href="/docs/0.6.0/storage/storage.html#notebook-storage-in-azure">Azure
Storage</a></li>
+ <li><a
href="/docs/0.6.0/storage/storage.html#storage-in-zeppelinhub">ZeppelinHub
Storage</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>REST API</b><span></li>
+ <li><a
href="/docs/0.6.0/rest-api/rest-interpreter.html">Interpreter API</a></li>
+ <li><a href="/docs/0.6.0/rest-api/rest-notebook.html">Notebook
API</a></li>
+ <li><a
href="/docs/0.6.0/rest-api/rest-configuration.html">Configuration API</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Security</b><span></li>
+ <li><a
href="/docs/0.6.0/security/authentication.html">Authentication for
NGINX</a></li>
+ <li><a
href="/docs/0.6.0/security/shiroauthentication.html">Shiro
Authentication</a></li>
+ <li><a
href="/docs/0.6.0/security/notebook_authorization.html">Notebook
Authorization</a></li>
+ <li><a
href="/docs/0.6.0/security/interpreter_authorization.html">Interpreter & Data
Resource Authorization</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Contibute</b><span></li>
+ <li><a
href="/docs/0.6.0/development/writingzeppelininterpreter.html">Writing Zeppelin
Interpreter</a></li>
+ <li><a href="/docs/0.6.0/development/howtocontribute.html">How
to contribute (code)</a></li>
+ <li><a
href="/docs/0.6.0/development/howtocontributewebsite.html">How to contribute
(website)</a></li>
+ </ul>
+ </li>
+ </ul>
+ </nav><!--/.navbar-collapse -->
+ </div>
+ </div>
+
+
+ <div class="content">
+
+<!--<div class="hero-unit Alluxio Interpreter">
+ <h1></h1>
+</div>
+-->
+
+<div class="row">
+ <div class="col-md-12">
+ <h1>Alluxio Interpreter for Apache Zeppelin</h1>
+
+<div id="toc"></div>
+
+<h2>Overview</h2>
+
+<p><a href="http://alluxio.org/">Alluxio</a> is a memory-centric distributed
storage system enabling reliable data sharing at memory-speed across cluster
frameworks.</p>
+
+<h2>Configuration</h2>
+
+<table class="table-configuration">
+ <tr>
+ <th>Name</th>
+ <th>Class</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td>alluxio.master.hostname</td>
+ <td>localhost</td>
+ <td>Alluxio master hostname</td>
+ </tr>
+ <tr>
+ <td>alluxio.master.port</td>
+ <td>19998</td>
+ <td>Alluxio master port</td>
+ </tr>
+</table>
+
+<h2>Enabling Alluxio Interpreter</h2>
+
+<p>In a notebook, to enable the <strong>Alluxio</strong> interpreter, click on
the <strong>Gear</strong> icon and select <strong>Alluxio</strong>.</p>
+
+<h2>Using the Alluxio Interpreter</h2>
+
+<p>In a paragraph, use <code>%alluxio</code> to select the
<strong>Alluxio</strong> interpreter and then input all commands.</p>
+<div class="highlight"><pre><code class="bash language-bash"
data-lang="bash">%alluxio
+<span class="nb">help</span>
+</code></pre></div>
+<blockquote>
+<p><strong>Tip :</strong> Use ( Ctrl + . ) for autocompletion.</p>
+</blockquote>
+
+<h2>Interpreter Commands</h2>
+
+<p>The <strong>Alluxio</strong> interpreter accepts the following commands.</p>
+
+<p><center>
+ <table class="table-configuration">
+ <tr>
+ <th>Operation</th>
+ <th>Syntax</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td>cat</td>
+ <td>cat "path"</td>
+ <td>Print the content of the file to the console.</td>
+ </tr>
+ <tr>
+ <td>chgrp</td>
+ <td>chgrp "group" "path"</td>
+ <td>Change the group of the directory or file.</td>
+ </tr>
+ <tr>
+ <td>chmod</td>
+ <td>chmod "permission" "path"</td>
+ <td>Change the permission of the directory or file.</td>
+ </tr>
+ <tr>
+ <td>chown</td>
+ <td>chown "owner" "path"</td>
+ <td>Change the owner of the directory or file.</td>
+ </tr>
+ <tr>
+ <td>copyFromLocal</td>
+ <td>copyFromLocal "source path" "remote path"</td>
+ <td>Copy the specified file specified by "source path" to the
path specified by "remote path".
+ This command will fail if "remote path" already exists.</td>
+ </tr>
+ <tr>
+ <td>copyToLocal</td>
+ <td>copyToLocal "remote path" "local path"</td>
+ <td>Copy the specified file from the path specified by "remote
path" to a local destination.</td>
+ </tr>
+ <tr>
+ <td>count</td>
+ <td>count "path"</td>
+ <td>Display the number of folders and files matching the specified
prefix in "path".</td>
+ </tr>
+ <tr>
+ <td>du</td>
+ <td>du "path"</td>
+ <td>Display the size of a file or a directory specified by the input
path.</td>
+ </tr>
+ <tr>
+ <td>fileInfo</td>
+ <td>fileInfo "path"</td>
+ <td>Print the information of the blocks of a specified file.</td>
+ </tr>
+ <tr>
+ <td>free</td>
+ <td>free "path"</td>
+ <td>Free a file or all files under a directory from Alluxio. If the
file/directory is also
+ in under storage, it will still be available there.</td>
+ </tr>
+ <tr>
+ <td>getCapacityBytes</td>
+ <td>getCapacityBytes</td>
+ <td>Get the capacity of the AlluxioFS.</td>
+ </tr>
+ <tr>
+ <td>getUsedBytes</td>
+ <td>getUsedBytes</td>
+ <td>Get number of bytes used in the AlluxioFS.</td>
+ </tr>
+ <tr>
+ <td>load</td>
+ <td>load "path"</td>
+ <td>Load the data of a file or a directory from under storage into
Alluxio.</td>
+ </tr>
+ <tr>
+ <td>loadMetadata</td>
+ <td>loadMetadata "path"</td>
+ <td>Load the metadata of a file or a directory from under storage into
Alluxio.</td>
+ </tr>
+ <tr>
+ <td>location</td>
+ <td>location "path"</td>
+ <td>Display a list of hosts that have the file data.</td>
+ </tr>
+ <tr>
+ <td>ls</td>
+ <td>ls "path"</td>
+ <td>List all the files and directories directly under the given path
with information such as
+ size.</td>
+ </tr>
+ <tr>
+ <td>mkdir</td>
+ <td>mkdir "path1" ... "pathn"</td>
+ <td>Create directory(ies) under the given paths, along with any
necessary parent directories.
+ Multiple paths separated by spaces or tabs. This command will fail if
any of the given paths
+ already exist.</td>
+ </tr>
+ <tr>
+ <td>mount</td>
+ <td>mount "path" "uri"</td>
+ <td>Mount the underlying file system path "uri" into the
Alluxio namespace as "path". The "path"
+ is assumed not to exist and is created by the operation. No data or
metadata is loaded from under
+ storage into Alluxio. After a path is mounted, operations on objects
under the mounted path are
+ mirror to the mounted under storage.</td>
+ </tr>
+ <tr>
+ <td>mv</td>
+ <td>mv "source" "destination"</td>
+ <td>Move a file or directory specified by "source" to a new
location "destination". This command
+ will fail if "destination" already exists.</td>
+ </tr>
+ <tr>
+ <td>persist</td>
+ <td>persist "path"</td>
+ <td>Persist a file or directory currently stored only in Alluxio to the
underlying file system.</td>
+ </tr>
+ <tr>
+ <td>pin</td>
+ <td>pin "path"</td>
+ <td>Pin the given file to avoid evicting it from memory. If the given
path is a directory, it
+ recursively pins all the files contained and any new files created
within this directory.</td>
+ </tr>
+ <tr>
+ <td>report</td>
+ <td>report "path"</td>
+ <td>Report to the master that a file is lost.</td>
+ </tr>
+ <tr>
+ <td>rm</td>
+ <td>rm "path"</td>
+ <td>Remove a file. This command will fail if the given path is a
directory rather than a file.</td>
+ </tr>
+ <tr>
+ <td>setTtl</td>
+ <td>setTtl "time"</td>
+ <td>Set the TTL (time to live) in milliseconds to a file.</td>
+ </tr>
+ <tr>
+ <td>tail</td>
+ <td>tail "path"</td>
+ <td>Print the last 1KB of the specified file to the console.</td>
+ </tr>
+ <tr>
+ <td>touch</td>
+ <td>touch "path"</td>
+ <td>Create a 0-byte file at the specified location.</td>
+ </tr>
+ <tr>
+ <td>unmount</td>
+ <td>unmount "path"</td>
+ <td>Unmount the underlying file system path mounted in the Alluxio
namespace as "path". Alluxio
+ objects under "path" are removed from Alluxio, but they still
exist in the previously mounted
+ under storage.</td>
+ </tr>
+ <tr>
+ <td>unpin</td>
+ <td>unpin "path"</td>
+ <td>Unpin the given file to allow Alluxio to evict this file again. If
the given path is a
+ directory, it recursively unpins all files contained and any new files
created within this
+ directory.</td>
+ </tr>
+ <tr>
+ <td>unsetTtl</td>
+ <td>unsetTtl</td>
+ <td>Remove the TTL (time to live) setting from a file.</td>
+ </tr><br>
+ </table>
+</center></p>
+
+<h2>How to test it's working</h2>
+
+<p>Be sure to have configured correctly the Alluxio interpreter, then open a
new paragraph and type one of the above commands.</p>
+
+<p>Below a simple example to show how to interact with Alluxio interpreter.
+Following steps are performed:</p>
+
+<ul>
+<li>using sh interpreter a new text file is created on local machine</li>
+<li>using Alluxio interpreter:
+
+<ul>
+<li>is listed the content of the afs (Alluxio File System) root</li>
+<li>the file previously created is copied to afs</li>
+<li>is listed again the content of the afs root to check the existence of the
new copied file</li>
+<li>is showed the content of the copied file (using the tail command)</li>
+<li>the file previously copied to afs is copied to local machine</li>
+</ul></li>
+<li> using sh interpreter it's checked the existence of the new file
copied from Alluxio and its content is showed</li>
+</ul>
+
+<p><center>
+ <img src="../assets/themes/zeppelin/img/docs-img/alluxio-example.png"
alt="Alluxio Interpreter Example">
+</center></p>
+
+ </div>
+</div>
+
+
+ <hr>
+ <footer>
+ <!-- <p>© 2016 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.6.0/interpreter/alluxio.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: zeppelin/site/docs/0.6.0/interpreter/cassandra.html
URL:
http://svn.apache.org/viewvc/zeppelin/site/docs/0.6.0/interpreter/cassandra.html?rev=1751605&view=auto
==============================================================================
--- zeppelin/site/docs/0.6.0/interpreter/cassandra.html (added)
+++ zeppelin/site/docs/0.6.0/interpreter/cassandra.html Wed Jul 6 06:25:29 2016
@@ -0,0 +1,988 @@
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>Cassandra Interpreter</title>
+ <meta name="description" content="Cassandra Interpreter">
+ <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.6.0/assets/themes/zeppelin/bootstrap/css/bootstrap.css"
rel="stylesheet">
+ <link href="/docs/0.6.0/assets/themes/zeppelin/css/style.css?body=1"
rel="stylesheet" type="text/css">
+ <link href="/docs/0.6.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.6.0/assets/themes/zeppelin/bootstrap/js/bootstrap.min.js"></script>
+ <script src="/docs/0.6.0/assets/themes/zeppelin/js/docs.js"></script>
+ <script src="/docs/0.6.0/assets/themes/zeppelin/js/anchor.min.js"></script>
+ <script src="/docs/0.6.0/assets/themes/zeppelin/js/toc.js"></script>
+
+ <!-- atom & rss feed -->
+ <link href="/docs/0.6.0/atom.xml" type="application/atom+xml"
rel="alternate" title="Sitewide ATOM Feed">
+ <link href="/docs/0.6.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">
+ <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>
+ <a class="navbar-brand" href="/docs/0.6.0">
+ <img src="/assets/themes/zeppelin/img/zeppelin_logo.png"
width="50" alt="I'm zeppelin">
+ <span style="vertical-align:middle">Zeppelin</span>
+ <span style="vertical-align:baseline"><small>0.6.0</small></span>
+ </a>
+ </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><a href="/docs/0.6.0/index.html">What is Apache Zeppelin
?</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Getting Started</b><span></li>
+ <li><a href="/docs/0.6.0/install/install.html">Install</a></li>
+ <li><a
href="/docs/0.6.0/install/install.html#apache-zeppelin-configuration">Configuration</a></li>
+ <li><a
href="/docs/0.6.0/quickstart/explorezeppelinui.html">Explore Zeppelin
UI</a></li>
+ <li><a
href="/docs/0.6.0/quickstart/tutorial.html">Tutorial</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Basic Feature Guide</b><span></li>
+ <li><a href="/docs/0.6.0/manual/dynamicform.html">Dynamic
Form</a></li>
+ <li><a href="/docs/0.6.0/manual/publish.html">Publish your
Paragraph</a></li>
+ <li><a
href="/docs/0.6.0/manual/notebookashomepage.html">Customize Zeppelin
Homepage</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>More</b><span></li>
+ <li><a
href="/docs/0.6.0/install/virtual_machine.html">Zeppelin on Vagrant VM</a></li>
+ <li><a href="/docs/0.6.0/install/upgrade.html">Upgrade
Zeppelin Version</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><a
href="/docs/0.6.0/manual/interpreters.html">Overview</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Usage</b><span></li>
+ <li><a
href="/docs/0.6.0/manual/interpreterinstallation.html">Interpreter
Installation</a></li>
+ <!--<li><a
href="/docs/0.6.0/manual/dynamicinterpreterload.html">Dynamic Interpreter
Loading</a></li>-->
+ <li><a
href="/docs/0.6.0/manual/dependencymanagement.html">Interpreter Dependency
Management</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Available
Interpreters</b><span></li>
+ <li><a
href="/docs/0.6.0/interpreter/alluxio.html">Alluxio</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/cassandra.html">Cassandra</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/elasticsearch.html">Elasticsearch</a></li>
+ <li><a href="/docs/0.6.0/interpreter/flink.html">Flink</a></li>
+ <li><a href="/docs/0.6.0/interpreter/geode.html">Geode</a></li>
+ <li><a href="/docs/0.6.0/interpreter/hbase.html">HBase</a></li>
+ <li><a href="/docs/0.6.0/interpreter/hdfs.html">HDFS</a></li>
+ <li><a href="/docs/0.6.0/interpreter/hive.html">Hive</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/ignite.html">Ignite</a></li>
+ <li><a href="/docs/0.6.0/interpreter/jdbc.html">JDBC</a></li>
+ <li><a href="/docs/0.6.0/interpreter/lens.html">Lens</a></li>
+ <li><a href="/docs/0.6.0/interpreter/livy.html">Livy</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/markdown.html">Markdown</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/python.html">Python</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/postgresql.html">Postgresql, HAWQ</a></li>
+ <li><a href="/docs/0.6.0/interpreter/r.html">R</a></li>
+ <li><a
href="/docs/0.6.0/interpreter/scalding.html">Scalding</a></li>
+ <li><a href="/docs/0.6.0/pleasecontribute.html">Shell</a></li>
+ <li><a href="/docs/0.6.0/interpreter/spark.html">Spark</a></li>
+ </ul>
+ </li>
+ <li>
+ <a href="#" data-toggle="dropdown"
class="dropdown-toggle">Display System <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li class="title"><span><b>Basic Display System</b><span></li>
+ <li><a
href="/docs/0.6.0/displaysystem/basicdisplaysystem.html#text">Text</a></li>
+ <li><a
href="/docs/0.6.0/displaysystem/basicdisplaysystem.html#html">Html</a></li>
+ <li><a
href="/docs/0.6.0/displaysystem/basicdisplaysystem.html#table">Table</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Angular API</b><span></li>
+ <li><a
href="/docs/0.6.0/displaysystem/back-end-angular.html">Angular (backend
API)</a></li>
+ <li><a
href="/docs/0.6.0/displaysystem/front-end-angular.html">Angular (frontend
API)</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><b>Notebook Storage</b><span></li>
+ <li><a
href="/docs/0.6.0/storage/storage.html#notebook-storage-in-local-git-repository">Git
Storage</a></li>
+ <li><a
href="/docs/0.6.0/storage/storage.html#notebook-storage-in-s3">S3
Storage</a></li>
+ <li><a
href="/docs/0.6.0/storage/storage.html#notebook-storage-in-azure">Azure
Storage</a></li>
+ <li><a
href="/docs/0.6.0/storage/storage.html#storage-in-zeppelinhub">ZeppelinHub
Storage</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>REST API</b><span></li>
+ <li><a
href="/docs/0.6.0/rest-api/rest-interpreter.html">Interpreter API</a></li>
+ <li><a href="/docs/0.6.0/rest-api/rest-notebook.html">Notebook
API</a></li>
+ <li><a
href="/docs/0.6.0/rest-api/rest-configuration.html">Configuration API</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Security</b><span></li>
+ <li><a
href="/docs/0.6.0/security/authentication.html">Authentication for
NGINX</a></li>
+ <li><a
href="/docs/0.6.0/security/shiroauthentication.html">Shiro
Authentication</a></li>
+ <li><a
href="/docs/0.6.0/security/notebook_authorization.html">Notebook
Authorization</a></li>
+ <li><a
href="/docs/0.6.0/security/interpreter_authorization.html">Interpreter & Data
Resource Authorization</a></li>
+ <li role="separator" class="divider"></li>
+ <li class="title"><span><b>Contibute</b><span></li>
+ <li><a
href="/docs/0.6.0/development/writingzeppelininterpreter.html">Writing Zeppelin
Interpreter</a></li>
+ <li><a href="/docs/0.6.0/development/howtocontribute.html">How
to contribute (code)</a></li>
+ <li><a
href="/docs/0.6.0/development/howtocontributewebsite.html">How to contribute
(website)</a></li>
+ </ul>
+ </li>
+ </ul>
+ </nav><!--/.navbar-collapse -->
+ </div>
+ </div>
+
+
+ <div class="content">
+
+<!--<div class="hero-unit Cassandra Interpreter">
+ <h1></h1>
+</div>
+-->
+
+<div class="row">
+ <div class="col-md-12">
+ <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="../assets/themes/zeppelin/img/docs-img/cassandra-InterpreterBinding.png"
alt="Interpreter Binding"></p>
+
+<p><img
src="../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="../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>HELP</td>
+ <td>Display the interactive help menu</td>
+ </tr>
+ <tr>
+ <td nowrap>Schema commands</td>
+ <td>DESCRIBE KEYSPACE, DESCRIBE CLUSTER, DESCRIBE TABLES ...</td>
+ <td>Custom commands to describe the Cassandra schema</td>
+ </tr>
+ <tr>
+ <td nowrap>Option commands</td>
+ <td>@consistency, @retryPolicy, @fetchSize ...</td>
+ <td>Inject runtime options to all statements in the paragraph</td>
+ </tr>
+ <tr>
+ <td nowrap>Prepared statement commands</td>
+ <td>@prepare, @bind, @remove_prepared</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 (SELECT, INSERT, CREATE ...)</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>@prepare</li>
+<li>@bind</li>
+<li>@remove_prepare</li>
+<li>@consistency</li>
+<li>@serialConsistency</li>
+<li>@timestamp</li>
+<li>@retryPolicy</li>
+<li>@fetchSize</li>
+<li>@requestTimeOut</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(CREATE/ALTER/DROP) 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="http://docs.datastax.com/en/cql/3.3/cql/cqlIntro.html">
+ http://docs.datastax.com/en/cql/3.3/cql/cqlIntro.html
+ </a>
+ </td>
+ </tr><br>
+ <tr>
+ <td><strong>2.2</strong></td>
+ <td>
+ <a target="_blank"
+ href="http://docs.datastax.com/en/cql/3.3/cql/cqlIntro.html">
+ http://docs.datastax.com/en/cql/3.3/cql/cqlIntro.html
+ </a>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>2.1 & 2.0</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>
+ <tr>
+ <td><strong>1.2</strong></td>
+ <td>
+ <a target="_blank"
+ href="http://docs.datastax.com/en/cql/3.0/cql/aboutCQL.html">
+ http://docs.datastax.com/en/cql/3.0/cql/aboutCQL.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> (#) or <strong>double
slashes</strong> (//). Multi-line comments are enclosed between /** and **/.
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="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="../assets/themes/zeppelin/img/docs-img/cassandra-DescribeSchema.png"
alt="Describe Schema">
+</center></p>
+
+<h2>Runtime 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>Retry Policy</td>
+ <td><strong>@retryPolicy=<em>value</em></strong></td>
+ <td>Apply the given retry policy to all queries in the paragraph</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>Retry Policy</td>
+ <td><strong>DEFAULT, DOWNGRADING<em>CONSISTENCY, FALLTHROUGH,
LOGGING</em>DEFAULT, LOGGING<em>DOWNGRADING,
LOGGING</em>FALLTHROUGH</strong></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 USING clause)</li>
+<li>the order of each query parameter with regard to CQL statement does not
matter</li>
+</ol>
+</blockquote>
+
+<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> @prepare 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>.
+`SELECT * FROM spark_demo.artists LIMIT ? is ignored because an entry already
exists in the prepared statements map with the key select.</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 ( â )</li>
+<li>Date values should be enclosed between simple quotes ( â ) and respect
the formats:
+
+<ol>
+<li>yyyy-MM-dd HH:MM:ss</li>
+<li>yyyy-MM-dd HH:MM:ss.SSS</li>
+</ol></li>
+<li><strong>null</strong> is parsed as-is</li>
+<li><strong>boolean</strong> (true|false) 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><a
href="http://zeppelin.apache.org/docs/0.6.0-SNAPSHOT/manual/dynamicform.html">Zeppelin
dynamic form</a></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
<em>performer='Sheryl Crow' AND style='Rock'</em>.
+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><a
href="http://zeppelin.apache.org/docs/0.6.0-SNAPSHOT/manual/interpreters.html">Interpreter
Binding Mode</a></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 <strong>USE <em>keyspace name</em>;</strong>
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://github.com/datastax/java-driver">Cassandra Java
Driver</a></strong> and most of the parameters are used
+to configure the Java driver</p>
+
+<p>Below are the configuration parameters and their default value.</p>
+
+<p><table class="table-configuration">
+ <tr>
+ <th>Property Name</th>
+ <th>Description</th>
+ <th>Default Value</th>
+ </tr>
+ <tr>
+ <td>cassandra.cluster</td>
+ <td>Name of the Cassandra cluster to connect to</td>
+ <td>Test Cluster</td>
+ </tr>
+ <tr>
+ <td>cassandra.compression.protocol</td>
+ <td>On wire compression. Possible values are: NONE, SNAPPY, LZ4</td>
+ <td>NONE</td>
+ </tr>
+ <tr>
+ <td>cassandra.credentials.username</td>
+ <td>If security is enable, provide the login</td>
+ <td>none</td>
+ </tr>
+ <tr>
+ <td>cassandra.credentials.password</td>
+ <td>If security is enable, provide the password</td>
+ <td>none</td>
+ </tr>
+ <tr>
+ <td>cassandra.hosts</td>
+ <td>
+ Comma separated Cassandra hosts (DNS name or IP address).
+ <br/>
+ Ex: '192.168.0.12,node2,node3'
+ </td>
+ <td>localhost</td>
+ </tr>
+ <tr>
+ <td>cassandra.interpreter.parallelism</td>
+ <td>Number of concurrent paragraphs(queries block) that can be
executed</td>
+ <td>10</td>
+ </tr>
+ <tr>
+ <td>cassandra.keyspace</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>system</td>
+ </tr>
+ <tr>
+ <td>cassandra.load.balancing.policy</td>
+ <td>
+ Load balancing policy. Default = <em>new TokenAwarePolicy(new
DCAwareRoundRobinPolicy())</em>
+ To Specify your own policy, provide the <strong>fully qualify class
name (FQCN)</strong> of your policy.
+ At runtime the interpreter will instantiate the policy using
+ <strong>Class.forName(FQCN)</strong>
+ </td>
+ <td>DEFAULT</td>
+ </tr>
+ <tr>
+ <td>cassandra.max.schema.agreement.wait.second</td>
+ <td>Cassandra max schema agreement wait in second</td>
+ <td>10</td>
+ </tr>
+ <tr>
+ <td>cassandra.pooling.core.connection.per.host.local</td>
+ <td>Protocol V2 and below default = 2. Protocol V3 and above default =
1</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>cassandra.pooling.core.connection.per.host.remote</td>
+ <td>Protocol V2 and below default = 1. Protocol V3 and above default =
1</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td>cassandra.pooling.heartbeat.interval.seconds</td>
+ <td>Cassandra pool heartbeat interval in secs</td>
+ <td>30</td>
+ </tr>
+ <tr>
+ <td>cassandra.pooling.idle.timeout.seconds</td>
+ <td>Cassandra idle time out in seconds</td>
+ <td>120</td>
+ </tr>
+ <tr>
+ <td>cassandra.pooling.max.connection.per.host.local</td>
+ <td>Protocol V2 and below default = 8. Protocol V3 and above default =
1</td>
+ <td>8</td>
+ </tr>
+ <tr>
+ <td>cassandra.pooling.max.connection.per.host.remote</td>
+ <td>Protocol V2 and below default = 2. Protocol V3 and above default =
1</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>cassandra.pooling.max.request.per.connection.local</td>
+ <td>Protocol V2 and below default = 128. Protocol V3 and above default =
1024</td>
+ <td>128</td>
+ </tr>
+ <tr>
+ <td>cassandra.pooling.max.request.per.connection.remote</td>
+ <td>Protocol V2 and below default = 128. Protocol V3 and above default =
256</td>
+ <td>128</td>
+ </tr>
+ <tr>
+ <td>cassandra.pooling.new.connection.threshold.local</td>
+ <td>Protocol V2 and below default = 100. Protocol V3 and above default =
800</td>
+ <td>100</td>
+ </tr>
+ <tr>
+ <td>cassandra.pooling.new.connection.threshold.remote</td>
+ <td>Protocol V2 and below default = 100. Protocol V3 and above default =
200</td>
+ <td>100</td>
+ </tr>
+ <tr>
+ <td>cassandra.pooling.pool.timeout.millisecs</td>
+ <td>Cassandra pool time out in millisecs</td>
+ <td>5000</td>
+ </tr>
+ <tr>
+ <td>cassandra.protocol.version</td>
+ <td>Cassandra binary protocol version</td>
+ <td>4</td>
+ </tr>
+ <tr>
+ <td>cassandra.query.default.consistency</td>
+ <td>
+ Cassandra query default consistency level
+ <br/>
+ Available values: ONE, TWO, THREE, QUORUM, LOCAL<em>ONE,
LOCAL</em>QUORUM, EACH<em>QUORUM, ALL
+ </td>
+ <td>ONE</td>
+ </tr>
+ <tr>
+ <td>cassandra.query.default.fetchSize</td>
+ <td>Cassandra query default fetch size</td>
+ <td>5000</td>
+ </tr>
+ <tr>
+ <td>cassandra.query.default.serial.consistency</td>
+ <td>
+ Cassandra query default serial consistency level
+ <br/>
+ Available values: SERIAL, LOCAL</em>SERIAL
+ </td>
+ <td>SERIAL</td>
+ </tr>
+ <tr>
+ <td>cassandra.reconnection.policy</td>
+ <td>
+ Cassandra Reconnection Policy.
+ Default = new ExponentialReconnectionPolicy(1000, 10 * 60 * 1000)
+ To Specify your own policy, provide the <strong>fully qualify class
name (FQCN)</strong> of your policy.
+ At runtime the interpreter will instantiate the policy using
+ <strong>Class.forName(FQCN)</strong>
+ </td>
+ <td>DEFAULT</td>
+ </tr>
+ <tr>
+ <td>cassandra.retry.policy</td>
+ <td>
+ Cassandra Retry Policy.
+ Default = DefaultRetryPolicy.INSTANCE
+ To Specify your own policy, provide the <strong>fully qualify class
name (FQCN)</strong> of your policy.
+ At runtime the interpreter will instantiate the policy using
+ <strong>Class.forName(FQCN)</strong>
+ </td>
+ <td>DEFAULT</td>
+ </tr>
+ <tr>
+ <td>cassandra.socket.connection.timeout.millisecs</td>
+ <td>Cassandra socket default connection timeout in millisecs</td>
+ <td>500</td>
+ </tr>
+ <tr>
+ <td>cassandra.socket.read.timeout.millisecs</td>
+ <td>Cassandra socket read timeout in millisecs</td>
+ <td>12000</td>
+ </tr>
+ <tr>
+ <td>cassandra.socket.tcp.no_delay</td>
+ <td>Cassandra socket TCP no delay</td>
+ <td>true</td>
+ </tr>
+ <tr>
+ <td>cassandra.speculative.execution.policy</td>
+ <td>
+ Cassandra Speculative Execution Policy.
+ Default = NoSpeculativeExecutionPolicy.INSTANCE
+ To Specify your own policy, provide the <strong>fully qualify class
name (FQCN)</strong> of your policy.
+ At runtime the interpreter will instantiate the policy using
+ <strong>Class.forName(FQCN)</strong>
+ </td>
+ <td>DEFAULT</td>
+ </tr>
+ </table></p>
+
+<h2>Change Log</h2>
+
+<p><strong>3.0</strong> <em>(Zeppelin 0.6.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.6.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-382?jql=project%20%3D%20ZEPPELIN">JIRA</a></strong>
ticket and ping me on Twitter
+ at <strong><a
href="https://twitter.com/doanduyhai">@doanduyhai</a></strong></p>
+
+ </div>
+</div>
+
+
+ <hr>
+ <footer>
+ <!-- <p>© 2016 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.6.0/interpreter/cassandra.html
------------------------------------------------------------------------------
svn:eol-style = native