有更好的选择通过spark读取mongodb吗?目前我使用https://github.com/Stratio/Spark-MongoDB
我是否理解正确
val mongoRDD = sql.fromMongoDB(mongoConfigurationData)
mongoRDD.registerTempTable("myTable")
是如此之慢,因为最初扫描了大量数据? 它怎么可能
sql.sql("CREATE TEMPORARY TABLE myTable USING mongoConfigurationData)") seems to be slower?
答案 0 :(得分:3)
您可以使用unity JDBC从mongodb中读取 和MongoDB Java Driver
import mongodb.jdbc.MongoDriver
导入两个类SparkConf和SparkContext
import org.apache.spark.sql.{DataFrame, SQLContext}
只需用您的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)
现在从新的Spark上下文创建新的SQLContext,它已经加载了db2驱动程序
val sqlContext = new SQLContext(sc)
从您的表的SQLContext创建一个dataframereader
val dataFrameReader = sqlContext.read.format("jdbc").options(options)
调用load方法为您的表创建DataFrame。
val tableDataFrame = dataFrameReader.load()
调用show()方法显示表内容
tableDataFrame.show()
价: http://bigdataauthority.blogspot.com/2016/03/connecting-to-mongodb-from-ibm-bluemix.html
谢谢,
查尔斯。