Apache Zeppelin 中 Cassandra CQL 解释器
来源:互联网 发布:手机怎么连接网络电视 编辑:程序博客网 时间:2024/06/06 05:37
启用Cassandra解释器
在笔记本中,要启用Cassandra解释器,请单击Gear图标并选择Cassandra。
使用Cassandra解释器
在段落中,使用%cassandra来选择Cassandra解释器,然后输入所有命令。
要访问交互式帮助,请键入HELP;
解释器命令
所述Cassandra解释器接受下列命令
CQL语句
该解释器与Cassandra支持的任何CQL语句兼容。例如:
除了以下特殊命令之外,每个语句都应以分号(;)分隔:
- @准备
- @bind
- @remove_prepare
- @一致性
- @serialConsistency
- @timestamp
- @retryPolicy
- @fetchSize
- @请求超时
只要它们以分号分隔,就支持多行语句以及同一行上的多个语句。例如:
支持批处理语句,可以跨多行,以及DDL(CREATE / ALTER / DROP)语句:
CQL语句不区分大小写(列名和值除外)。这意味着以下语句是等同和有效的:
所有CQL语句和版本的完整列表如下:
声明中的评论
可以在语句之间添加注释。单行注释以哈希符号(#)或双斜杠(//)开头。多行注释在/ **和** /之间。例如:
语法验证
解释器随附了一个内置的语法验证器。此验证器仅检查基本语法错误。
所有与CQL相关的语法验证都直接委托给Cassandra
大多数情况下,语法错误是由于语句或打字错误之间的分号丢失造成的。
模式命令
为了使模式发现更容易和更具交互性,支持以下命令:
模式对象(集群,密钥空间,表,类型,功能和聚合)以表格格式显示。左上角有一个下拉菜单来展开对象细节。右上角的菜单显示“图标”图标。
运行时参数
有时您希望能够将运行时查询参数传递给您的语句。
这些参数不是CQL规范的一部分,而是特定于解释器。
以下是所有参数的列表:
一些参数仅接受限制值:
请注意,您应该不加分号(;在每个参数语句的结束)
一些例子:
有关查询参数的一些注释:
- 许多查询参数可以在同一段落中设置
- 如果相同的查询参数用不同的值设置很多时间,则解释器仅考虑第一个值
- 每个查询参数都适用于同一段落中的所有CQL语句,除非您使用纯CQL文本覆盖选项(如强制使用USING子句的时间戳)
- 关于CQL语句的每个查询参数的顺序并不重要
支持准备声明
出于性能原因,最好先准备语句,然后通过提供绑定值重用它们。
此解释器提供3个命令来处理准备和绑定的语句:
- @prepare
- @bind
- @remove_prepared
例:
@prepare
您可以使用语法“@prepare [statement-name] = SELECT ...”来创建一个准备好的语句。该语句名是强制性的,因为翻译准备与Java驱动程序给定的语句,并在保存生成的准备语句内部哈希表,使用所提供的语句名作为搜索关键字。
请注意,内部准备的语句映射与所有笔记本和所有段落共享,因为Cassandra只有一个解释器实例
如果解释器遇到相同的statement-name(key)的许多 @prepare,那么只有第一个语句才会被考虑。
例:
对于上述示例,准备好的语句是SELECT * FROM spark_demo.albums LIMIT ?
。`SELECT * FROM spark_demo.artists LIMIT?被忽略,因为已准备好的语句映射中已经存在一个条目,带有key select。
在Zeppelin的背景下,笔记本可以定期执行,因此有必要避免重新准备许多时间相同的声明(被认为是反模式)。
@bind
一旦准备好声明(可能在分开的笔记本/段落中)。您可以将值绑定到它:
绑定值不是@bind语句的强制值。但是,如果您提供绑定值,则需要遵守一些语法:
- 字符串值应包含在简单引号(')之间
- 日期值应包含在简单引号(')之间,并遵循格式:
- yyyy-MM-dd HH:MM:ss
- yyyy-MM-dd HH:MM:ss.SSS
- null按原样解析
- 布尔值(true | false)按原样解析
- 集合值必须遵循标准的CQL语法:
- 列表:['list item1','list item2',...]
- 设置:{'set item1','set item2',...}
- map:{'key1':'val1','key2':'val2',...}
- 元组值应该在括号之间(见元组CQL语法):('text',123,true)
- udt值应该在括号之间(见UDT CQL语法):{stree name:'Beverly Hills',number:104,邮编:90020,state:'California',...}
可以在批处理中使用@bind语句:
@remove_prepare
为了避免准备好的语句永远保留在准备好的语句映射中,您可以使用 @remove_prepare [statement-name]语法将其删除。删除不存在的准备语句不会产生错误。
使用动态表单
而不是对CQL查询进行硬编码,可以使用Zeppelin动态表单语法注入简单的值或多个选择表单。
仍然支持绑定输入文本和选择表单的旧式胡须语法({{}}),但不推荐使用,并在将来的版本中将其删除。
传统 简单参数的语法是:{{input_Label = default value}}。默认值是强制性的,因为第一次执行该段落,我们在呈现表单之前启动CQL查询,因此应提供至少一个值。
多选择参数的语法是:{{input_Label = value1 | value2 | ... | valueN}}。默认情况下,第一次执行该段落时,首选用于CQL查询。
例:
在上面的例子中,第一个CQL查询将执行为performer ='Sheryl Crow'AND style ='Rock'。对于后续查询,您可以使用表单直接更改值。
请注意,我们在简单引号(')之间附带了$ {}块,因为Cassandra希望有一个String。我们也可以使用$ {style ='Rock'}语法,但这次,表单上显示的值是“Rock”而不是Rock。
也可以使用动态表单来准备语句:
共享状态
可以并行执行许多段落。但是,在后端,我们仍然使用同步查询。 只有当有可能返回值时,异步执行才是可能Future
的InterpreterResult
。这可能是Zeppelin项目的一个有趣的建议。
最近,Zeppelin允许您选择解释员的隔离级别(请参阅解释器绑定模式)。
长篇小说,你有3个可用的绑定:
- shared:相同的JVM和所有注释的相同的解释器实例
- 范围:相同的JVM但不同的解释器实例,每个音符一个
- 隔离:不同的JVM运行单个解释器实例,每个音符一个JVM
使用共享绑定,所有注释和段落com.datastax.driver.core.Session
都使用相同的对象。因此,如果您使用USE 密钥空间名称 ; 声明登录到一个密钥空间,它会更改密钥空间 所有当前用户的的卡桑德拉解释,因为我们只能创造1个%的实例对象卡桑德拉解释。 com.datastax.driver.core.Session
同样的说法也适用于准备好的语句哈希映射,它由所有使用Cassandra解释器的实例共享。
当使用作用域绑定时,在同一个JVM中, Zeppelin将创建Cassandra解释器的多个实例,从而创建多个com.datastax.driver.core.Session
对象。小心使用这种绑定的资源和内存使用!
所述分离的模式是最极端的,并且将创建许多JVM / com.datastax.driver.core.Session
因为有不同的笔记对象。
解释器配置
要配置Cassandra解释器,请转到解释器菜单,向下滚动以更改参数。该卡珊德拉解释器使用的是官方卡桑德拉Java驱动程序和大多数参数都用于配置Java驱动程序
以下是配置参数及其默认值。
例如:'192.168.0.12,node2,node3'localhostcassandra.interpreter.parallelism可执行的并发段数(查询块)数10cassandra.keyspace要连接的默认键盘空间。强烈建议让默认值在表名前加上所有查询中的实际键空格systemcassandra.load.balancing.policy
负载均衡策略。Default = new TokenAwarePolicy(new DCAwareRoundRobinPolicy()) 要指定您自己的策略,请提供您的策略的完全限定类名(FQCN)。
在运行时,解释器将使用Class.forName(FQCN)实例化策略,
DEFAULTcassandra.max.schema.agreement.wait.secondCassandra max模式协议等待第二10cassandra.pooling.core.connection.per.host.local协议V2及以下default = 2.协议V3及以上default = 12cassandra.pooling.core.connection.per.host.remote协议V2及以下default = 1.协议V3及以上default = 11cassandra.pooling.heartbeat.interval.seconds卡桑德拉泳池心跳间隔(秒)30cassandra.pooling.idle.timeout.secondsCassandra空闲时间在几秒钟内120cassandra.pooling.max.connection.per.host.localProtocol V2及以下default = 8.协议V3及以上default = 18cassandra.pooling.max.connection.per.host.remote协议V2及以下default = 2.协议V3及以上default = 12cassandra.pooling.max.request.per.connection.local协议V2及以下默认值= 128.协议V3及以上默认值= 1024128cassandra.pooling.max.request.per.connection.remote协议V2及以下默认值= 128.协议V3及以上默认值= 256128cassandra.pooling.new.connection.threshold.local协议V2及以下默认值= 100.协议V3及以上默认= 800100cassandra.pooling.new.connection.threshold.remote协议V2及以下默认值= 100.协议V3及以上default = 200100cassandra.pooling.pool.timeout.millisecsCassandra游泳池以毫秒为单位超时5000cassandra.protocol.versionCassandra二进制协议版本4cassandra.query.default.consistencyCassandra查询默认一致性级别可用值:ONE,TWO,THREE,QUORUM,LOCAL ONE,LOCAL QUORUM,EACH QUORUM,ALLONEcassandra.query.default.fetchSizeCassandra查询默认提取大小5000cassandra.query.default.serial.consistencyCassandra查询默认串行一致性级别
可用值:SERIAL,LOCALSERIALSERIALcassandra.reconnection.policy
Cassandra重新连接政策。Default = new ExponentialReconnectionPolicy(1000, 10 * 60 * 1000) 要指定自己的策略,请提供策略的完全限定类名(FQCN)。
在运行时,解释器将使用Class.forName(FQCN)实例化策略,
DEFAULTcassandra.retry.policyCassandra重试政策 Default = DefaultRetryPolicy.INSTANCE要指定您自己的策略,请提供您的策略的完全限定类名(FQCN)。在运行时,解释器将使用Class.forName(FQCN)实例化策略, DEFAULTcassandra.socket.connection.timeout.millisecsCassandra套接字默认连接超时(毫秒)500cassandra.socket.read.timeout.millisecsCassandra套接字以毫秒为单位读取超时12000cassandra.socket.tcp.no_delayCassandra套接字TCP没有延迟truecassandra.speculative.execution.policyCassandra投机执行政策 Default = NoSpeculativeExecutionPolicy.INSTANCE要指定您自己的策略,请提供策略的完全限定类名(FQCN)。
在运行时,解释器将使用Class.forName(FQCN)实例化策略。
DEFAULT更改日志
3.0 (Zeppelin 0.7.1):
- 更新文档
- 更新交互式文档
- 添加对二进制协议V4的支持
- 实现新的
@requestTimeOut
运行时选项 - 将Java驱动程序版本升级到3.0.1
- 允许解释器在使用FormType.SIMPLE时以编程方式添加动态表单
- 允许动态窗体使用默认的Zeppelin语法
- 在FallThroughPolicy上修正打字错误
- 在创建动态表单之前,请先查看AngularObjectRegistry中的数据
- 添加缺少的
ALTER
语句支持
2.0 (Zeppelin 0.7.1):
- 更新帮助菜单并添加更改日志
- 添加对用户定义函数,用户定义的聚合和物化视图的支持
- 将Java驱动程序版本升级到3.0.0-rc1
1.0 (Zeppelin 0.5.5-孵育):
- 初始版本
错误和联系人
如果您遇到这个解释器的错误,请在@doanduyhai创建一个JIRA票,并在Twitter上打我一下。
- Apache Zeppelin 中 Cassandra CQL 解释器
- Apache Zeppelin 中 Spark 解释器
- Apache Zeppelin 中 JDBC通用 解释器
- Apache Zeppelin 中 Hive 解释器
- Apache Zeppelin 中 HDFS文件系统 解释器
- Apache Zeppelin 中 Elasticsearch 解释器
- Apache Zeppelin 中 Flink 解释器
- Apache Zeppelin 中 R 解释器
- Apache Zeppelin 中 Alluxio 解释器
- Apache Zeppelin 中 Python 2&3解释器
- cassandra cql
- Datastax文档Apache Cassandra v2.1 第一部分 关于Apache Cassandra和CQL
- Cassandra数据操作 -- CQL
- Cassandra CQL使用详解
- Cassandra CQL的限制
- cassandra cql解析
- cassandra cql查询
- Cassandra CQL Data Types
- Ubuntu下Eclipse的安装方法(图文详解)
- 使用 UMEditor-jsp 图片上传失败解决方法
- android监听SD卡状态
- 电商产品评论数据情感分析代码详解
- [Week 3] [Leetcode] [Array] Remove Duplicates from Sorted Array
- Apache Zeppelin 中 Cassandra CQL 解释器
- 【算法作业17】LeetCode 303. Range Sum Query
- Idea中Git的使用和两种类型的冲突解决
- 使用决策树预测隐形眼镜类型
- SVN分支合并的原理及操作
- eclipse启动卡死解决方法
- 【poj 1003】Hangover 题解&代码(c++)
- 更新tensorflow到1.2版本
- iOS获取当前app的名称和版本号