2016-04-14 81 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中什么都没有。任何建议? –