无法使用Presto从MongoDB中获取记录

时间:2019-04-29 12:58:53

标签: mongodb apache-spark presto

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

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({})时获得的数据相同。以文件的形式给我合适的结果

请帮助

2 个答案:

答案 0 :(得分:0)

  •   

    我仅通过更改mongodb集合名称即可解决上述问题
      所有小写​​字母。 presto mongodb目录存在问题,   它不识别大写字母集合名称,那是   无法识别收藏夹的原因。          因此,我将收件箱改成小号,然后开始工作。 :)

答案 1 :(得分:0)

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

mongodb.case-insensitive-name-matching=true