【发布时间】:2021-06-01 17:40:15
【问题描述】:
- presto 服务器以 mongodb 和 myql 目录启动。
- 通过 presto cli,我可以查询两个来源的表。
- 我什至可以发出一个查询,将两个来源的数据结合起来。
- 在 Mongo 中是 mongodb.test.actors,其中包含 name、city、dob 字段。
- 在 MySql 中是 mysql.imdb_full.actors,它有 name、sex 字段。
问题是当我尝试直接从 presto cli 发出创建视图而不运行“use .schema”时,如下所示,我得到一个异常 Schema must be specified when session schema is not set as below
presto> 从 mongodb.test.actors 创建视图 xyz_view 作为选择名称、城市、dob; 查询 20210303_063035_00046_ecshq 失败:第 1:1 行:未设置会话架构时必须指定架构 com.facebook.presto.sql.analyzer.SemanticException:第 1:1 行:未设置会话架构时必须指定架构 在 com.facebook.presto.metadata.MetadataUtil.lambda$createQualifiedObjectName$2(MetadataUtil.java:148) 在 java.util.Optional.orElseThrow(Optional.java:290) 在 com.facebook.presto.metadata.MetadataUtil.createQualifiedObjectName(MetadataUtil.java:147) 在 com.facebook.presto.execution.CreateViewTask.execute(CreateViewTask.java:82) 在 com.facebook.presto.execution.CreateViewTask.execute(CreateViewTask.java:49) 在 com.facebook.presto.execution.DataDefinitionExecution.start(DataDefinitionExecution.java:187) 在 com.facebook.presto.$gen.Presto_0_247_a896816____20210303_053748_1.run(未知来源) 在 com.facebook.presto.execution.SqlQueryManager.createQuery(SqlQueryManager.java:254) 在 com.facebook.presto.dispatcher.LocalDispatchQuery.lambda$startExecution$5(LocalDispatchQuery.java:114) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)
当我切换到“使用 mongodb.test”并发出如下创建视图时,我得到此连接器不支持创建视图,如下所示。
presto:test> create view xyz_view as select name,city,dob from mongodb.test.actors; 查询 20210303_062603_00045_ecshq 失败:此连接器不支持创建视图 com.facebook.presto.spi.PrestoException:此连接器不支持创建视图 在 com.facebook.presto.spi.connector.ConnectorMetadata.createView(ConnectorMetadata.java:528) 在 com.facebook.presto.metadata.MetadataManager.createView(MetadataManager.java:1030) 在 com.facebook.presto.execution.CreateViewTask.execute(CreateViewTask.java:108) 在 com.facebook.presto.execution.CreateViewTask.execute(CreateViewTask.java:49) 在 com.facebook.presto.execution.DataDefinitionExecution.start(DataDefinitionExecution.java:187) 在 com.facebook.presto.$gen.Presto_0_247_a896816____20210303_053748_1.run(未知来源) 在 com.facebook.presto.execution.SqlQueryManager.createQuery(SqlQueryManager.java:254) 在 com.facebook.presto.dispatcher.LocalDispatchQuery.lambda$startExecution$5(LocalDispatchQuery.java:114) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)
我检查了 ConnectorMetadata.java createView() 除了抛出这个异常之外没有任何代码。
当我将架构切换到 mysql.imdb_full 时出现同样的错误,说连接器不支持创建视图。
但 mysql 连接器文档并未将创建视图显示为限制。
请帮忙。
【问题讨论】: