我使用的是MongoDB版本3.4.10,Spark版本2.2.1和MongoDB-Spark连接器版本2.2.1。
我有一个scala spark程序,该程序通过MongoDB-Spark连接器连续轮询MongoDB以获取新数据。我注意到,仅在我们的实时环境中,第一次或第二次轮询后程序才挂起(不会崩溃只是停止,没有更多日志输出)。
查看日志输出,这是最后一行:
18/08/02 11:13:59 INFO MongoClientCache: Closing MongoClient: [localhost:27017]
18/08/02 11:13:59 INFO connection: Closed connection [connectionId{localValue:4, serverValue:84}] to localhost:27017 because the pool has been closed.
我不确定是什么原因造成的。其他人遇到过类似的事情吗?
编辑:添加轮询数据库的代码。
每次我需要轮询时,都会像这样加载mongoDB数据:
//sc is SparkContext
val rdd = sc.loadFromMongoDB(ReadConfig(Map("uri"->twdbURI)))
return rdd.filter(doc => doc.getLong("time") > timestamp)
答案 0 :(得分:0)
我找到了解决方法。我在具有1个核心的VirtualBox VM中运行我的Spark和MongoDB应用程序。将虚拟机设置为具有2个内核可以解决此问题。因此,Spark-MongoDB似乎失败了,并且没有报告错误。