我试图使用Apache Drill查询专有的RDBMS。我已经将插件创建为JDBC数据源并将我的JDBC jar放在jars / 3rdparty目录中,并且我能够成功运行SELECT * FROM mytable
之类的查询。
但是,如果我在查询中使用列名称,例如SELECT mycol FROM mytable
,则Drill会返回以下错误:Error: VALIDATION ERROR: From line 1, column 8 to line 1, column 9: Column 'mycol' not found in any table
。此外,我注意到如果运行SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
我的架构完全丢失,所以我有一种预感,Drill无法从JDBC驱动程序中检索我的数据库架构。
我想知道JDBC驱动程序的哪种方法可能导致错误导致此问题。 JDBC驱动程序已经与Spark等其他第三方软件一起使用,没有任何问题。
答案 0 :(得分:1)
要在表格上执行查询,您需要在表格名称前加上您为存储插件提供的名称。例如,如果您将存储插件命名为 rdbms ,则查询应如下所示:
SELECT * FROM rdbms.mytable
由于同样的原因,您的其他查询SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
可能会失败。试试SELECT * FROM rdbms.INFORMATION_SCHEMA.SCHEMATA
。并且不要忘记将 rdbms 替换为您为存储插件添加的名称。
答案 1 :(得分:0)
我认为我们应该像select * from dfs.<storagePlugin>.tableName
你可以查一次吗?