# Geode/Gemfire OQL 解释器
原文链接 : [http://zeppelin.apache.org/docs/0.7.2/interpreter/geode.html](http://zeppelin.apache.org/docs/0.7.2/interpreter/geode.html)
译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10030798](http://www.apache.wiki/pages/viewpage.action?pageId=10030798)
贡献者 : [片刻](/display/~jiangzhonglian) [ApacheCN](/display/~apachecn) [Apache中文网](/display/~apachechina)
## 概述
| 名称 | 类 | 描述 |
| --- | --- | --- |
| %geode.oql | GeodeOqlInterpreter | 为Apache Geode提供OQL环境 |
此解释器支持[Geode ](http://geode.incubator.apache.org/)[对象查询语言(OQL)](http://geode-docs.cfapps.io/docs/developing/querying_basics/oql_compared_to_sql.html)。使用基于OQL的查询语言:
[![飞艇视图](http://img.youtube.com/vi/zvzzA9GXu3Q/3.jpg)](https://www.youtube.com/watch?v=zvzzA9GXu3Q)
* 您可以查询任何任意对象
* 您可以浏览对象集合
* 您可以调用方法并访问对象的行为
* 支持数据映射
* 您不需要声明类型。由于您不需要类型定义,您可以跨多种语言工作
* 您不受模式约束
本[视频教程](https://www.youtube.com/watch?v=zvzzA9GXu3Q)说明了该功能提供的一些功能`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`标签。
[ ](http://zeppelin.apache.org/docs/0.7.1/interpreter/geode.html#bind-to-notebook)
## 绑定到笔记本
在`Notebook`上点击`settings`在右上角的图标。选择/取消选择要与之绑定的口译员`Notebook`。
[ ](http://zeppelin.apache.org/docs/0.7.1/interpreter/geode.html#configuration)
## 配置
您可以从`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](https://cwiki.apache.org/confluence/display/GEODE/Index#Index-MainConceptsandComponents)突变操作。对`create`/ `destroy`区域应该使用[GFSH](http://geode-docs.cfapps.io/docs/tools_modules/gfsh/chapter_overview.html) shell工具。在下文中,假设GFSH与Zeppelin服务器共同配置。
```
%sh
source /etc/geode/conf/geode-env.sh
gfsh << EOF
connect --locator=ambari.localdomain[10334]
destroy region --name=/regionEmployee
destroy region --name=/regionCompany
create region --name=regionEmployee --type=REPLICATE
create region --name=regionCompany --type=REPLICATE
exit;
EOF
```
以上片段重新创建了两个区域:`regionEmployee`和`regionCompany`。请注意,您必须明确指定定位器主机和端口。这些值应与Geode Interpreter配置中使用的值相匹配。功能[区GFSH命令](http://geode-docs.cfapps.io/docs/tools_modules/gfsh/gfsh_quick_reference.html)综合清单。
### 基本OQL
```
%geode.oql
SELECT count(*) FROM /regionEmployee
```
OQL `IN`和`SET`过滤器
```
%geode.oql
SELECT * FROM /regionEmployee
WHERE companyId IN SET(2) OR lastName IN SET('Tzolov13', 'Tzolov73')
```
OQL `JOIN`操作
```
%geode.oql
SELECT e.employeeId, e.firstName, e.lastName, c.id as companyId, c.companyName, c.address
FROM /regionEmployee e, /regionCompany c
WHERE e.companyId = c.id
```
默认情况下,QOL响应仅包含区域条目值。要访问密钥,请查询`EntrySet`:
```
%geode.oql
SELECT e.key, e.value.companyId, e.value.email
FROM /regionEmployee.entrySet e
```
以下查询将返回EntrySet值作为Blob:
```
%geode.oql
SELECT e.key, e.value FROM /regionEmployee.entrySet e
```
> 注意:您可以在同一段落中有多个查询,但只显示第一个查询结果。[ [1](https://issues.apache.org/jira/browse/ZEPPELIN-178) ],[ [2](https://issues.apache.org/jira/browse/ZEPPELIN-212) ]。
### Shell的GFSH命令
使用Shell 解释器(`%sh`)从命令行运行OQL命令:
```
%sh
source /etc/geode/conf/geode-env.sh
gfsh -e "connect" -e "list members"
```
### [应用Zeppelin动态表单](http://zeppelin.apache.org/docs/0.7.1/interpreter/geode.html#apply-zeppelin-dynamic-forms)
您可以在OQL查询内使用[Zeppelin 动态表单](http://www.apache.wiki/pages/viewpage.action?pageId=10030585)。您可以同时使用`text input`和`select form`参数化功能
```
%geode.oql
SELECT * FROM /regionEmployee e WHERE e.employeeId > ${Id}
```
### [自动完成](http://zeppelin.apache.org/docs/0.7.1/interpreter/geode.html#auto-completion)
Geode解释器提供基本的自动完成功能。在`(Ctrl+.)`其中列出最相关的建议在弹出窗口。
## Geode REST API
要列出定义的区域,您可以使用[Geode REST API](http://geode-docs.cfapps.io/docs/geode_rest/chapter_overview.html):
```
http://<geode server hostname>phd1.localdomain:8484/gemfire-api/v1/
```
```
{
"regions" : [{
"name" : "regionEmployee",
"type" : "REPLICATE",
"key-constraint" : null,
"value-constraint" : null
}, {
"name" : "regionCompany",
"type" : "REPLICATE",
"key-constraint" : null,
"value-constraint" : null
}]
}
```
> 要使用JSON支持Geode REST API,请将以下属性添加到geode.server.properties.file并重新启动:
```
http-service-port=8484
start-dev-rest-api=true
```
- 快速入门
- 什么是Apache Zeppelin?
- 安装
- 配置
- 探索Apache Zeppelin UI
- 教程
- 动态表单
- 发表你的段落
- 自定义Zeppelin主页
- 升级Zeppelin版本
- 从源码编译
- 使用Flink和Spark Clusters安装Zeppelin教程
- 解释器
- 概述
- 解释器安装
- 解释器依赖管理
- 解释器的模拟用户
- 解释员执行Hook(实验)
- Alluxio 解释器
- Beam 解释器
- BigQuery 解释器
- Cassandra CQL 解释器
- Elasticsearch 解释器
- Flink 解释器
- Geode/Gemfire OQL 解释器
- HBase Shell 解释器
- HDFS文件系统 解释器
- Hive 解释器
- Ignite 解释器
- JDBC通用 解释器
- Kylin 解释器
- Lens 解释器
- Livy 解释器
- Markdown 解释器
- Pig 解释器
- PostgreSQL, HAWQ 解释器
- Python 2&3解释器
- R 解释器
- Scalding 解释器
- Scio 解释器
- Shell 解释器
- Spark 解释器
- 系统显示
- 系统基本显示
- 后端Angular API
- 前端Angular API
- 更多
- 笔记本存储
- REST API
- 解释器 API
- 笔记本 API
- 笔记本资源 API
- 配置 API
- 凭据 API
- Helium API
- Security ( 安全 )
- Shiro 授权
- 笔记本 授权
- 数据源 授权
- Helium 授权
- Advanced ( 高级 )
- Zeppelin on Vagrant VM ( Zeppelin 在 Vagrant 虚拟机上 )
- Zeppelin on Spark Cluster Mode( Spark 集群模式下的 Zeppelin )
- Zeppelin on CDH ( Zeppelin 在 CDH 上 )
- Contibute ( 贡献 )
- Writing a New Interpreter ( 写一个新的解释器 )
- Writing a new Visualization (Experimental) ( 编写新的可视化(实验) )
- Writing a new Application (Experimental) ( 写一个新的应用程序( 实验 ) )
- Contributing to Apache Zeppelin ( Code ) ( 向 Apache Zeppelin 贡献( 代码 ) )
- Contributing to Apache Zeppelin ( Website ) ( 向 Apache Zeppelin 贡献(website) )