2016-04-14 82 views
0

有沒有更好的選擇通過火花從mongodb讀取?目前我使用https://github.com/Stratio/Spark-MongoDB從mongodb讀取火花

難道我理解正確的是

val mongoRDD = sql.fromMongoDB(mongoConfigurationData) 
    mongoRDD.registerTempTable("myTable") 

是如此之慢,因爲很多數據的初始掃描? 豈是

sql.sql("CREATE TEMPORARY TABLE myTable USING mongoConfigurationData)") seems to be slower? 

回答

3

您可以使用unity JDBCMongoDB Java Driver

import mongodb.jdbc.MongoDriver 

導入兩個類SparkConf和SparkContext

import org.apache.spark.sql.{DataFrame, SQLContext} 

只需使用您的MongoDB更換URL的MongoDB閱讀網址。 dbtable,其中包含要爲其創建數據框的表的名稱。 替換您的db2數據庫服務器的用戶名和密碼。

val url = "jdbc:mongo://ds045252.mlab.com:45252/samplemongodb" 
val dbtable = "Photos" 
val user = "charles2588" 
val password = "*****" 
val options = scala.collection.Map("url" -> url,"driver" -> "mongodb.jdbc.MongoDriver","dbtable" ->dbtable,"user"->user,"password"->password) 

現在從已經DB2驅動程序加載

val sqlContext = new SQLContext(sc) 

創建一個從您的SQLContext一個dataframereader爲你的餐桌

val dataFrameReader = sqlContext.read.format("jdbc").options(options) 

調用load方法來創建新的Spark環境中創建新SQLContext DataFrame用於您的表格。

val tableDataFrame = dataFrameReader.load() 

呼叫show()方法來顯示錶的內容

tableDataFrame.show() 

價: http://bigdataauthority.blogspot.com/2016/03/connecting-to-mongodb-from-ibm-bluemix.html

謝謝,

查爾斯。

+0

嗨,我嘗試以這種方式連接到mongodb時出現錯誤Auth失敗。在添加選項「dbname」 - >「admin」之後,我可以訪問mongodb。但它帶來了新的錯誤: 採樣採集時出錯:system.profile .....所以我在dataFrameReader中什麼都沒有。任何建議? –