【问题标题】:presto create view on CLI gives connector does not support create view errorpresto create view on CLI 给连接器不支持创建视图错误
【发布时间】:2021-06-01 17:40:15
【问题描述】:
  1. presto 服务器以 mongodb 和 myql 目录启动。
  2. 通过 presto cli,我可以查询两个来源的表。
  3. 我什至可以发出一个查询,将两个来源的数据结合起来。
  4. 在 Mongo 中是 mongodb.test.actors,其中包含 name、city、dob 字段。
  5. 在 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 连接器文档并未将创建视图显示为限制。

请帮忙。

【问题讨论】:

    标签: mysql mongodb view presto


    【解决方案1】:

    仅 Hive 连接器支持视图创建。

    特别是,它在 MySQL 等 JDBC 连接器中不受支持。

    但 mysql 连接器文档并未将创建视图显示为限制。

    我为此提交了https://github.com/trinodb/trino/issues/7150

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 2021-07-01
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多