| |
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <title>Apache Zeppelin 0.7.2 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="/docs/0.7.2/assets/themes/zeppelin/font-awesome.min.css" rel="stylesheet"> |
| |
| <!-- Le styles --> |
| <link href="/docs/0.7.2/assets/themes/zeppelin/bootstrap/css/bootstrap.css" rel="stylesheet"> |
| <link href="/docs/0.7.2/assets/themes/zeppelin/css/style.css?body=1" rel="stylesheet" type="text/css"> |
| <link href="/docs/0.7.2/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="/docs/0.7.2/assets/themes/zeppelin/jquery-1.10.2.min.js"></script> |
| <script src="/docs/0.7.2/assets/themes/zeppelin/bootstrap/js/bootstrap.min.js"></script> |
| <script src="/docs/0.7.2/assets/themes/zeppelin/js/docs.js"></script> |
| <script src="/docs/0.7.2/assets/themes/zeppelin/js/anchor.min.js"></script> |
| <script src="/docs/0.7.2/assets/themes/zeppelin/js/toc.js"></script> |
| <script src="/docs/0.7.2/assets/themes/zeppelin/js/lunr.min.js"></script> |
| <script src="/docs/0.7.2/assets/themes/zeppelin/js/search.js"></script> |
| |
| <!-- atom & rss feed --> |
| <link href="/docs/0.7.2/atom.xml" type="application/atom+xml" rel="alternate" title="Sitewide ATOM Feed"> |
| <link href="/docs/0.7.2/rss.xml" type="application/rss+xml" rel="alternate" title="Sitewide RSS Feed"> |
| |
| <!-- Matomo --> |
| <script> |
| var _paq = window._paq = window._paq || []; |
| /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ |
| _paq.push["setDoNotTrack", true]; |
| _paq.push["disableCookies"]; |
| _paq.push['trackPageView']; |
| _paq.push['enableLinkTracking']; |
| function { |
| var u="https://analytics.apache.org/"; |
| _paq.push['setTrackerUrl', u+'matomo.php']; |
| _paq.push['setSiteId', '69']; |
| var d=document, g=d.createElement'script', s=d.getElementsByTagName'script'[0]; |
| g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBeforeg,s; |
| }; |
| </script> |
| <!-- End Matomo Code --> |
| </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> |
| <div class="navbar-brand"> |
| <a class="navbar-brand-main" href="http://zeppelin.apache.org"> |
| <img src="/assets/themes/zeppelin/img/zeppelin_logo.png" width="50" alt="I'm zeppelin"> |
| <span style="vertical-align:middle">Zeppelin</span> |
| </a> |
| <a class="navbar-brand-version" href="/docs/0.7.2"> |
| <span><small>0.7.2</small></span> |
| </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><a href="/docs/0.7.2/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.7.2/install/install.html">Install</a></li> |
| <li><a href="/docs/0.7.2/install/configuration.html">Configuration</a></li> |
| <li><a href="/docs/0.7.2/quickstart/explorezeppelinui.html">Explore Zeppelin UI</a></li> |
| <li><a href="/docs/0.7.2/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.7.2/manual/dynamicform.html">Dynamic Form</a></li> |
| <li><a href="/docs/0.7.2/manual/publish.html">Publish your Paragraph</a></li> |
| <li><a href="/docs/0.7.2/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.7.2/install/upgrade.html">Upgrade Zeppelin Version</a></li> |
| <li><a href="/docs/0.7.2/install/build.html">Build from source</a></li> |
| <li><a href="/docs/0.7.2/quickstart/install_with_flink_and_spark_cluster.html">Install Zeppelin with Flink and Spark Clusters Tutorial</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.7.2/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.7.2/manual/interpreterinstallation.html">Interpreter Installation</a></li> |
| <!--<li><a href="/docs/0.7.2/manual/dynamicinterpreterload.html">Dynamic Interpreter Loading</a></li>--> |
| <li><a href="/docs/0.7.2/manual/dependencymanagement.html">Interpreter Dependency Management</a></li> |
| <li><a href="/docs/0.7.2/manual/userimpersonation.html">Interpreter User Impersonation</a></li> |
| <li><a href="/docs/0.7.2/manual/interpreterexechooks.html">Interpreter Execution Hooks (Experimental)</a></li> |
| <li role="separator" class="divider"></li> |
| <li class="title"><span><b>Available Interpreters</b><span></li> |
| <li><a href="/docs/0.7.2/interpreter/alluxio.html">Alluxio</a></li> |
| <li><a href="/docs/0.7.2/interpreter/beam.html">Beam</a></li> |
| <li><a href="/docs/0.7.2/interpreter/bigquery.html">BigQuery</a></li> |
| <li><a href="/docs/0.7.2/interpreter/cassandra.html">Cassandra</a></li> |
| <li><a href="/docs/0.7.2/interpreter/elasticsearch.html">Elasticsearch</a></li> |
| <li><a href="/docs/0.7.2/interpreter/flink.html">Flink</a></li> |
| <li><a href="/docs/0.7.2/interpreter/geode.html">Geode</a></li> |
| <li><a href="/docs/0.7.2/interpreter/hbase.html">HBase</a></li> |
| <li><a href="/docs/0.7.2/interpreter/hdfs.html">HDFS</a></li> |
| <li><a href="/docs/0.7.2/interpreter/hive.html">Hive</a></li> |
| <li><a href="/docs/0.7.2/interpreter/ignite.html">Ignite</a></li> |
| <li><a href="/docs/0.7.2/interpreter/jdbc.html">JDBC</a></li> |
| <li><a href="/docs/0.7.2/interpreter/kylin.html">Kylin</a></li> |
| <li><a href="/docs/0.7.2/interpreter/lens.html">Lens</a></li> |
| <li><a href="/docs/0.7.2/interpreter/livy.html">Livy</a></li> |
| <li><a href="/docs/0.7.2/interpreter/markdown.html">Markdown</a></li> |
| <li><a href="/docs/0.7.2/interpreter/pig.html">Pig</a></li> |
| <li><a href="/docs/0.7.2/interpreter/python.html">Python</a></li> |
| <li><a href="/docs/0.7.2/interpreter/postgresql.html">Postgresql, HAWQ</a></li> |
| <li><a href="/docs/0.7.2/interpreter/r.html">R</a></li> |
| <li><a href="/docs/0.7.2/interpreter/scalding.html">Scalding</a></li> |
| <li><a href="/docs/0.7.2/interpreter/scio.html">Scio</a></li> |
| <li><a href="/docs/0.7.2/interpreter/shell.html">Shell</a></li> |
| <li><a href="/docs/0.7.2/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.7.2/displaysystem/basicdisplaysystem.html#text">Text</a></li> |
| <li><a href="/docs/0.7.2/displaysystem/basicdisplaysystem.html#html">Html</a></li> |
| <li><a href="/docs/0.7.2/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.7.2/displaysystem/back-end-angular.html">Angular (backend API)</a></li> |
| <li><a href="/docs/0.7.2/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.7.2/storage/storage.html#notebook-storage-in-local-git-repository">Git Storage</a></li> |
| <li><a href="/docs/0.7.2/storage/storage.html#notebook-storage-in-s3">S3 Storage</a></li> |
| <li><a href="/docs/0.7.2/storage/storage.html#notebook-storage-in-azure">Azure Storage</a></li> |
| <li><a href="/docs/0.7.2/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.7.2/rest-api/rest-interpreter.html">Interpreter API</a></li> |
| <li><a href="/docs/0.7.2/rest-api/rest-notebook.html">Notebook API</a></li> |
| <li><a href="/docs/0.7.2/rest-api/rest-notebookRepo.html">Notebook Repository API</a></li> |
| <li><a href="/docs/0.7.2/rest-api/rest-configuration.html">Configuration API</a></li> |
| <li><a href="/docs/0.7.2/rest-api/rest-credential.html">Credential API</a></li> |
| <li><a href="/docs/0.7.2/rest-api/rest-helium.html">Helium API</a></li> |
| <li role="separator" class="divider"></li> |
| <li class="title"><span><b>Security</b><span></li> |
| <li><a href="/docs/0.7.2/security/shiroauthentication.html">Shiro Authentication</a></li> |
| <li><a href="/docs/0.7.2/security/notebook_authorization.html">Notebook Authorization</a></li> |
| <li><a href="/docs/0.7.2/security/datasource_authorization.html">Data Source Authorization</a></li> |
| <li><a href="/docs/0.7.2/security/helium_authorization.html">Helium Authorization</a></li> |
| <li role="separator" class="divider"></li> |
| <li class="title"><span><b>Advanced</b><span></li> |
| <li><a href="/docs/0.7.2/install/virtual_machine.html">Zeppelin on Vagrant VM</a></li> |
| <li><a href="/docs/0.7.2/install/spark_cluster_mode.html#spark-standalone-mode">Zeppelin on Spark Cluster Mode (Standalone)</a></li> |
| <li><a href="/docs/0.7.2/install/spark_cluster_mode.html#spark-on-yarn-mode">Zeppelin on Spark Cluster Mode (YARN)</a></li> |
| <li><a href="/docs/0.7.2/install/spark_cluster_mode.html#spark-on-mesos-mode">Zeppelin on Spark Cluster Mode (Mesos)</a></li> |
| <li><a href="/docs/0.7.2/install/cdh.html">Zeppelin on CDH</a></li> |
| <li role="separator" class="divider"></li> |
| <li class="title"><span><b>Contibute</b><span></li> |
| <li><a href="/docs/0.7.2/development/writingzeppelininterpreter.html">Writing Zeppelin Interpreter</a></li> |
| <li><a href="/docs/0.7.2/development/writingzeppelinvisualization.html">Writing Zeppelin Visualization (Experimental)</a></li> |
| <li><a href="/docs/0.7.2/development/writingzeppelinapplication.html">Writing Zeppelin Application (Experimental)</a></li> |
| <li><a href="/docs/0.7.2/development/howtocontribute.html">How to contribute (code)</a></li> |
| <li><a href="/docs/0.7.2/development/howtocontributewebsite.html">How to contribute (website)</a></li> |
| </ul> |
| </li> |
| <li> |
| <a href="/docs/0.7.2/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="../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.7.2)</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.7.2)</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>© 2017 The Apache Software Foundation</p>--> |
| </footer> |
| </div> |
| |
| |
| |
| |
| |
| |
| |
| </body> |
| </html> |
| |