无法使用 presto 从 mongodb 获取记录

Posted

技术标签:

【中文标题】无法使用 presto 从 mongodb 获取记录【英文标题】:Not able to fetch records from mongodb using presto 【发布时间】:2019-09-18 02:41:21 【问题描述】:

我在 etc/catalog 下有一个名为 mongodb.properties 的 mongodb 目录 当我运行 presto shell 并执行命令时: 显示表格; 我显示了 mongodb 的集合,但是当我运行选择查询时,它给了我错误。

presto> select * from <catalog>.<schema>.<collection/table>;
Gives error :
java.sql.SQLException: Query failed (#20190429_125534_00001_qxggq): line 1:8: SELECT * not allowed in queries without FROM clause
at io.prestosql.jdbc.PrestoResultSet.resultsException(PrestoResultSet.java:1839)
at io.prestosql.jdbc.PrestoResultSet.getColumns(PrestoResultSet.java:1749)
at io.prestosql.jdbc.PrestoResultSet.<init>(PrestoResultSet.java:118)
at io.prestosql.jdbc.PrestoStatement.internalExecute(PrestoStatement.java:251)
at io.prestosql.jdbc.PrestoStatement.execute(PrestoStatement.java:229)
at io.prestosql.jdbc.PrestoStatement.executeQuery(PrestoStatement.java:78)
at spark_mongo_poc.SparkMongo.process_query(SparkMongo.java:32)
at spark_mongo_poc.SparkMongo.main(SparkMongo.java:76)

Presto> select name from <mongodb>.<schema>.<collection>;
Gives error :
java.sql.SQLException: Query failed (#20190429_125718_00002_qxggq): line 1:8: Column 'name' cannot be resolved
at io.prestosql.jdbc.PrestoResultSet.resultsException(PrestoResultSet.java:1839)
at io.prestosql.jdbc.PrestoResultSet.getColumns(PrestoResultSet.java:1749)
at io.prestosql.jdbc.PrestoResultSet.<init>(PrestoResultSet.java:118)
at io.prestosql.jdbc.PrestoStatement.internalExecute(PrestoStatement.java:251)
at io.prestosql.jdbc.PrestoStatement.execute(PrestoStatement.java:229)
at io.prestosql.jdbc.PrestoStatement.executeQuery(PrestoStatement.java:78)
at spark_mongo_poc.SparkMongo.process_query(SparkMongo.java:32)
at spark_mongo_poc.SparkMongo.main(SparkMongo.java:76)

我想要与执行 db.collection.find(); 时获得的相同数据;这以文件的形式给了我正确的结果

请帮忙

【问题讨论】:

"SELECT * not allowed in queries without FROM" 听起来您的查询语法有问题。您能否提供未经编辑的查询文本?当您以编程方式发出查询时,您可以在 Presto Web UI 中找到查询文本。 【参考方案1】:

我通过更改 mongodb 集合名称解决了上述问题 全部小写。 presto mongodb 目录存在问题 它不识别大写字母集合名称,那是 无法识别集合的原因。 所以我把我的收藏箱改得更低,它开始工作了。 :)

【讨论】:

【参考方案2】:

我有类似的问题。我修复了它,将其添加到目录配置中。

mongodb.case-insensitive-name-matching=true

【讨论】:

以上是关于无法使用 presto 从 mongodb 获取记录的主要内容,如果未能解决你的问题,请参考以下文章

Presto 无法获取 HIVE 表中的内容

Apollo Angular 无法从 GraphQL/MongoDB 获取数据

从 Presto SQL 中的字符串获取日期

如何在毯子[]中获取文本(Presto)

GraphQL:查询:无法从 MongoDb 获取数据

无法使用带有 mongodb 的 typeorm 获取刷新令牌