从mongodb读取的火花

时间:2016-04-14 20:52:38

标签: mongodb apache-spark apache-spark-sql

有更好的选择通过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?

1 个答案:

答案 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

谢谢,

查尔斯。