在 apache-drill 中使用 bootstrap-storage-plugins.json 文件作为存储插件的异常

Posted

技术标签:

【中文标题】在 apache-drill 中使用 bootstrap-storage-plugins.json 文件作为存储插件的异常【英文标题】:Exception in using bootstrap-storage-plugins.json file for storage plugin in apache-drill 【发布时间】: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 以编程方式设置存储插件配置。 issues.apache.org/jira/browse/DRILL-2003 【参考方案1】:

您的查询看起来像是对文件系统的查询。使用 mongo 存储插件配置,没有工作区或文件,因此请尝试使您的查询看起来像这样:

SELECT * FROM testCollection;

确保您使用了正确的数据库名称,并且您的和集合已列出(显示数据库和显示表)。

Drill 文档的 published correction 可能会有所帮助。

【讨论】:

以上是关于在 apache-drill 中使用 bootstrap-storage-plugins.json 文件作为存储插件的异常的主要内容,如果未能解决你的问题,请参考以下文章

从 JetBrains JDBC 驱动程序执行 Drill 查询时引用错误

ApiCloud开发经验总结

如何在 vue 3 vite 中使用 sass 扩展?

如何反转reactstrap中的列?

托管的 WiX 引导程序包

使用带有固定位置标题的 scrollIntoView