2016-11-21 5 views
0

MongoDBにprestodb(サーバーとCLIのバージョン0.157)で照会できないコレクションが1つあることが判明しました。prestodb raises IllegalArgumentException:ベースが1つのmongodbコレクションで空です

他のすべてのコレクションは正常に照会できますが、この1つのコレクションを直接照会したり、他のコレクションと結合することはできません。それはコレクションの中でも最大でも複雑でもありませんが、おそらくはプレストがタイプに問題があります。

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の特定のフィールドに日付と時には整数がありますが、それは確かめるために多くの掘削が必要であるという手がかりを持っています)

+0

私はPrestoプロジェクトで問題を提出します。 –

答えて

0

@miniwayのおかげで、Prestoは完全なスキーマを推論できませんでした。いくつかの埋め込み文書。

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

を実行することにより

私はプレストがそれをマップするために失敗したことを意味row()のようないくつかのマッピングを、気づきました。特定のフィールドは、固定スキーマを意味しないpymongoによって挿入された汎用のPython辞書であったため、マッピングが困難でした。

"解決策"は、辞書を保持するためにvarcharを使用してスキーマのその部分を手動で定義することでした。

関連する問題