1

我想为MongoDBin添加存储插件apache-drill。阅读文档后,我开始知道以编程方式我可以通过两种方式做到这一点:

  1. 休息 API
  2. 使用 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);
        }

引导存储插件.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 
4

1 回答 1

0

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

SELECT * FROM testCollection;

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

已发布的Drill 文档更正可能会有所帮助。

于 2015-08-13T00:25:12.717 回答