Geode/Gemfire OQL 解释器

原文链接 : http://zeppelin.apache.org/docs/0.7.2/interpreter/geode.html

译文链接 : http://www.apache.wiki/pages/viewpage.action?pageId=10030798

贡献者 : 片刻 ApacheCN Apache中文网

概述

名称 描述
%geode.oql GeodeOqlInterpreter 为Apache Geode提供OQL环境

此解释器支持Geode 对象查询语言(OQL)。使用基于OQL的查询语言:

飞艇视图

  • 您可以查询任何任意对象
  • 您可以浏览对象集合
  • 您可以调用方法并访问对象的行为
  • 支持数据映射
  • 您不需要声明类型。由于您不需要类型定义,您可以跨多种语言工作
  • 您不受模式约束

视频教程说明了该功能提供的一些功能Geode Interpreter

创建解释器

默认情况下,Zeppelin创建一个Geode/OQL实例。您可以删除它或创建更多的实例。

可以创建多个Geode实例,每个实例都配置为相同或不同的后端Geode集群。但是随着时间的推移, Notebook可以只有一个Geode解释器实例bound。这意味着您无法连接到同一个不同的Geode集群Notebook。这是一个已知的Zeppelin限制。

要创建新的Geode实例,请打开该Interpreter部分,然后单击该+Create按钮。选择Name您的选择,并从Interpreter下拉列表中选择geode。然后按照配置说明和Save新实例进行操作。

注意:该Name实例仅用于区分实例,同时绑定它们Notebook。这Name是不相干的Notebook。在Notebook你必须使用%geode.oql标签。

绑定到笔记本

Notebook上点击settings在右上角的图标。选择/取消选择要与之绑定的口译员Notebook

配置

您可以从Interpreter部分修改Geode的配置。Geode解释器表示以下属性:

属性名称 描述 默认值
geode.locator.host Geode定位器主机 本地主机
geode.locator.port Geode定位器端口 10334
geode.max.result 显示OQL结果的最大数量,以防止浏览器过载 1000

如何使用

提示1:使用(CTRL +。)进行OQL自动完成。

提示2:始终使用完整的%geode.oql前缀标签启动段落!简短的符号:%geode仍然可以运行OQL查询,但语法突出显示和自动完成将被禁用。

创建/销毁区域

OQL规范不支持 Geode Regions突变操作。对create/ destroy区域应该使用GFSH shell工具。在下文中,假设GFSH与Zeppelin服务器共同配置。

  1. %sh
  2. source /etc/geode/conf/geode-env.sh
  3. gfsh << EOF
  4. connect --locator=ambari.localdomain[10334]
  5. destroy region --name=/regionEmployee
  6. destroy region --name=/regionCompany
  7. create region --name=regionEmployee --type=REPLICATE
  8. create region --name=regionCompany --type=REPLICATE
  9. exit;
  10. EOF

以上片段重新创建了两个区域:regionEmployeeregionCompany。请注意,您必须明确指定定位器主机和端口。这些值应与Geode Interpreter配置中使用的值相匹配。功能区GFSH命令综合清单。

基本OQL

  1. %geode.oql
  2. SELECT count(*) FROM /regionEmployee

OQL INSET过滤器

  1. %geode.oql
  2. SELECT * FROM /regionEmployee
  3. WHERE companyId IN SET(2) OR lastName IN SET('Tzolov13', 'Tzolov73')

OQL JOIN操作

  1. %geode.oql
  2. SELECT e.employeeId, e.firstName, e.lastName, c.id as companyId, c.companyName, c.address
  3. FROM /regionEmployee e, /regionCompany c
  4. WHERE e.companyId = c.id

默认情况下,QOL响应仅包含区域条目值。要访问密钥,请查询EntrySet

  1. %geode.oql
  2. SELECT e.key, e.value.companyId, e.value.email
  3. FROM /regionEmployee.entrySet e

以下查询将返回EntrySet值作为Blob:

  1. %geode.oql
  2. SELECT e.key, e.value FROM /regionEmployee.entrySet e

注意:您可以在同一段落中有多个查询,但只显示第一个查询结果。[ 1 ],[ 2 ]。

Shell的GFSH命令

使用Shell 解释器(%sh)从命令行运行OQL命令:

  1. %sh
  2. source /etc/geode/conf/geode-env.sh
  3. gfsh -e "connect" -e "list members"

应用Zeppelin动态表单

您可以在OQL查询内使用Zeppelin 动态表单。您可以同时使用text inputselect form参数化功能

  1. %geode.oql
  2. SELECT * FROM /regionEmployee e WHERE e.employeeId > ${Id}

自动完成

Geode解释器提供基本的自动完成功能。在(Ctrl+.)其中列出最相关的建议在弹出窗口。

Geode REST API

要列出定义的区域,您可以使用Geode REST API

  1. http://<geode server hostname>phd1.localdomain:8484/gemfire-api/v1/
  1. {
  2. "regions" : [{
  3. "name" : "regionEmployee",
  4. "type" : "REPLICATE",
  5. "key-constraint" : null,
  6. "value-constraint" : null
  7. }, {
  8. "name" : "regionCompany",
  9. "type" : "REPLICATE",
  10. "key-constraint" : null,
  11. "value-constraint" : null
  12. }]
  13. }

要使用JSON支持Geode REST API,请将以下属性添加到geode.server.properties.file并重新启动:

  1. http-service-port=8484
  2. start-dev-rest-api=true