2016-08-16 32 views
0

我正在使用Mongo-Spark連接器文檔中的所有示例(https://docs.mongodb.com/spark-connector/sparkR/)都很好,但如果我在包含子文檔的文檔中測試查詢失敗,顯然SQL尚未準備好此查詢:sparkR-Mongo連接器查詢到子文檔

result <- sql(sqlContext, "SELECT DOCUMENT.SUBDOCUMENT FROM TABLE") 

錯誤:

com.mongodb.spark.exceptions.MongoTypeConversionException: Cannot cast INT32 into a ConflictType (value: BsonInt32{value=171609012}) 
     at com.mongodb.spark.sql.MapFunctions$.com$mongodb$spark$sql$MapFunctions$$convertToDataType(MapFunctions.scala:79) 
     at com.mongodb.spark.sql.MapFunctions$$anonfun$3.apply(MapFunctions.scala:38) 
     at com.mongodb.spark.sql.MapFunctions$$anonfun$3.apply(MapFunctions.scala:36) 
     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) 
     at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) 
     at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) 
     at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108) 
     at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) 
     at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108) 
     at com.mongodb.spark.sql.MapFunctions$.documentToRow(MapFunctions.scala:36) 
     at com.mongodb.spark.sql.MapFunctions$.castToStructType(MapFunctions.scala:108) 
     at com.mongodb.spark.sql.MapFunctions$.com$mongodb$spark$sql$MapFunctions$$convertToDataType(MapFunctions.scala:74) 

此前我已經註冊表如下:

registerTempTable(schema, "TABLE") 

我想關鍵的問題是如何將mongo-subdocument註冊爲表格。

有人有解決方案嗎?

+0

請給我們看一個樣本文件嗎? – notionquest

回答

0

解決方案:所有字段都必須遵循相同的類型,我在String類型中有字段,而在Double類型中有其他字段,因此,表已註冊,但不能進行處理。