prestodb提高了iLlegalArgumentException:一个元组收藏的基础是空的



我刚刚发现,我的mongodb上有一个集合,我无法与prestodb查询(server and cli版本0.157)。

所有其他集合都可以正常查询,但是这个集合不能直接查询或与其他任何东西一起加入。它不是收藏中最大的,也不是最复杂的,但显然Presto在类型上遇到麻烦。

java.lang.IllegalArgumentException: base is empty
    at com.facebook.presto.spi.type.TypeSignature.checkArgument(TypeSignature.java:370)
    at com.facebook.presto.spi.type.TypeSignature.<init>(TypeSignature.java:48)
    at com.facebook.presto.spi.type.TypeSignature.parseTypeSignature(TypeSignature.java:101)
    at com.facebook.presto.spi.type.TypeSignature.parseRowTypeSignature(TypeSignature.java:199)
    at com.facebook.presto.spi.type.TypeSignature.parseTypeSignature(TypeSignature.java:104)
    at com.facebook.presto.spi.type.TypeSignature.parseTypeSignature(TypeSignature.java:94)
    at com.facebook.presto.mongodb.MongoSession.buildColumnHandle(MongoSession.java:199)
    at com.facebook.presto.mongodb.MongoSession.loadTableSchema(MongoSession.java:185)
    at com.facebook.presto.mongodb.MongoSession.access$000(MongoSession.java:76)
    at com.facebook.presto.mongodb.MongoSession$1.load(MongoSession.java:128)
    at com.facebook.presto.mongodb.MongoSession$1.load(MongoSession.java:123)
    (...) very long stack trace

我已经搜索了与集合命名有关的一些问题,但是该问题遵循相同的惯例(实际上它没有下划线,有些则可以使用,而且有效)。

最可能的原因是什么?也许是不一致的模式?(我有线索,MongoDB中的某个字段有时有时,有时是整数,但这需要大量挖掘才能确认)

感谢@miniway,我已经发现Presto未能推断出一些嵌入式文档的完整模式。

通过运行

db.getCollection("_schema").findOne({"table" : "tableName"})

我注意到了一些映射,例如row(),这意味着Presto未能映射它。特定字段很难映射,因为它是通过pymongo插入的通用Python字典,这意味着没有固定的模式。

"解决方案"是简单地使用VARCHAR保存字典的手动定义该模式的部分。

相关内容

  • 没有找到相关文章

最新更新