2017-04-17 55 views
0

我試圖在MongoDB中讀取一個集合作爲一個火花數據幀 這個我做什麼,我使用的Eclipse的Scala IDE,這我做了什麼讀取MongoDB的數據引發

package TestMongoDB 
import org.apache.spark.sql.SparkSession 
import com.mongodb.spark.sql._ 
import com.mongodb.spark._ 
import org.bson.Document 
import com.mongodb.spark.config._ 
object MongoDB extends App { 

try { 
val sparkSession = SparkSession.builder().master("local").getOrCreate() 
def makeMongoURI(uri:String,database:String,collection:String) = (s"${uri}/${database}.${collection}") 

val mongoURI = "mongodb://127.0.0.1:27017" 
val Conf = makeMongoURI(mongoURI,"io","thing") 
val readConfigintegra: ReadConfig = ReadConfig(Map("uri" -> Conf)) 
// Uses the ReadConfig 
val df3 = sparkSession.sqlContext.loadFromMongoDB(ReadConfig(Map("uri" -> "mongodb://127.0.0.1:27017/io.thing"))) 
df3.printSchema() 
     } catch { 
     case t: Throwable => t.printStackTrace() // TODO: handle error 
     println(t.getMessage) 
     } 

    } 

我得到了下面的錯誤

java.lang.IncompatibleClassChangeError: Implementing class 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$100(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$100(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at com.mongodb.MongoClientOptions$Builder.<init>(MongoClientOptions.java:758) 
    at com.stratio.datasource.mongodb.config.MongodbConfig$.<init>(MongodbConfig.scala:72) 
    at com.stratio.datasource.mongodb.config.MongodbConfig$.<clinit>(MongodbConfig.scala) 
    at TestMongoDB.MongoDB$.delayedEndpoint$TestMongoDB$MongoDB$1(MongoDB.scala:13) 

,但我得到這個錯誤 enter image description here

任何幫助的感謝

錯誤屏幕截圖 enter image description here

回答

0

你可以這樣做也

import com.mongodb.spark.sql._ 
import com.mongodb.spark._ 
import org.bson.Document 
import com.mongodb.spark.config._ 

def makeMongoURI(uri:String,database:String,collection:String) = (s"${uri}/${database}.${collection}") 

val mongoURI = "mongodb://000.000.000.000:27017" 
val Conf = makeMongoURI(mongoURI,"DBname","collectionname") 

val readConfigintegra: ReadConfig = ReadConfig(Map("uri" -> Conf)) 


// Uses the ReadConfig 
val df3 = sqlContext.loadFromMongoDB(ReadConfig(Map("uri" -> "mongodb://000.000.000.000:27017/DBname.collectionname"))) 

從上面的代碼中,你可以閱讀蒙戈收集並存儲爲數據幀。

+0

我照你說的做了,請檢查更新我是如何做到的,但我得到了同樣的異常 –

+0

重新編譯依賴它的所有東西。做一個乾淨的生成 –

+0

你會給我的maven依賴關係引用可能是我有不兼容的jar,你使用哪個依賴關係?謝謝 –