【发布时间】:2015-08-12 10:42:04
【问题描述】:
我想在apache-drill 中为MongoDB 添加存储插件。阅读文档后,我开始知道以编程方式我可以通过两种方式做到这一点:
- 休息 API
- 使用 bootstrap-storage-plugins.json 进行配置
我正在为我的 java 代码使用第二种方式。
我的代码的有用部分:
Connection conn = new Driver().connect("jdbc:drill:zk=local",null);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("show databases");
while (rs.next())
{
String SCHEMA_NAME = rs.getString("SCHEMA_NAME");
System.out.println(SCHEMA_NAME);
}
bootstrap-storage-plugins.json:
{
"type": "mongo",
"connection": "mongodb://localhost:27017/",
"enabled": true
}
但在开火时
"select * from mongo.testDB.`testCollection`";
我遇到了以下异常:
org.apache.calcite.sql.validate.SqlValidatorException 严重:org.apache.calcite.sql.validate.SqlValidatorException:找不到表'mongo.testDB.testCollection' 2015 年 8 月 12 日上午 3:47:05 org.apache.calcite.runtime.CalciteException 严重:org.apache.calcite.runtime.CalciteContextException:从第 1 行第 15 列到第 1 行第 19 列:表 'mongo.testDB.testCollection' 未找到 java.sql.SQLException:解析错误:从第 1 行第 15 列到第 1 行第 19 列:未找到表 'mongo.testDB.testCollection'
bootstrap-storage-plugins.json 在我的类路径中。我需要提供其他信息吗?
编辑:
我尝试了show databases 查询,但它没有显示来自MongoDB 的架构。它只显示:
INFORMATION_SCHEMA
cp.default
dfs.default
dfs.root
dfs.tmp
sys
【问题讨论】:
-
当你运行
show databases;时,Drill 会返回什么?它应该将每个 mongotdb 表的条目显示为mongodb.tablename。有任何表格出现吗? -
show databases 不为我显示集合(它显示 mongo.local 和 mongo.test 数据库)。我使用 mongo.test 然后显示表格,然后我在列表中看到我的收藏拉链。我可以只使用集合名称而不使用反引号来查询集合:select * from zips limit 10;但我使用的是钻壳。也许你在打issues.apache.org/jira/browse/DRILL-3466。
-
@ChrisMatta 显示数据库未显示来自 mongodb 的模式
-
在分布式模式下,引导方法仅在您第一次启动集群时起作用。该问题与 zookeeper 持久数据有关。在嵌入式模式下,引导模式应该可以工作,但从未经过测试。 Drill 专家正在尝试获取有关嵌入式模式/引导程序的更多信息,但同时建议使用 REST API 以编程方式设置存储插件配置。
标签: apache-drill