python - 使用 Spark-MongoDB 连接器时连接池关闭
问题描述
当我尝试使用 Mmngo-spark 从 mongoDB 读取时,我遇到了错误connector_2.11:2.2.7
。
在初始化 spark 上下文 mongodb 接受连接之后,就在我尝试从中读取集合之后,我得到:
INFO MongoClientCache: Closing MongoClient: [localhost:27017]
INFO connection: Closed connection [connectionId{localValue:2,
serverValue:17}] to localhost:27017 because the pool has been closed.
MongoDB 容器输出:
I NETWORK [initandlisten] connection accepted from 172.18.0.1:65513 #6
(2 connections now open)
I NETWORK [initandlisten] connection accepted from 172.18.0.1:65515 #7
(3 connections now open) I NETWORK [conn7] end connection
172.18.0.1:65515 (2 connections now open) I NETWORK [conn6] end
connection 172.18.0.1:65513 (1 connection now open)
所有组件 mongoDB、Spark master 和 worker 都是 Docker 中的容器(暴露了必要的端口,我可以使用 shell 连接到所有组件)。
所以我真的不知道出了什么问题
我有一个正在运行的 spark 集群,有一个 master 和一个 worker,所有节点都具有将 spark 连接到 mongoDB 的必要依赖项
MongoDBsession = SparkSession \
.builder \
.appName("MongoDB Export to Hive") \
.master("spark://localhost:7077") \
.config("spark.mongodb.input.uri", "mongodb://localhost:27017/db_name.collection_name?readPreference=primaryPreferred") \
.config("spark.mongodb.input.partitioner","MongoSamplePartitioner") \
.config("spark.jars.packages", "org.mongodb.spark:mongo-spark-connector_2.11:2.2.7") \
.getOrCreate()
df_mongoDB_messageLogs = MongoDBsession.read \
.format("mongo") \
.option("database","db_name") \
.option("collection","collection_name") \
.load()
更新:
仅当将 spark 应用程序提交到 spark-cluster (localhost:7077) 时才会发生这种情况。如果我使用 master=local 运行 spark-submit,则从 mongoDB 读取数据没有问题。有任何想法吗 ?
解决方案
好吧,最后它甚至不是mongodb或spark的错误。这只是码头工人的事情。我无法使用 localhost 访问 mongodb。
推荐阅读
- javascript - SortableJS 没有将我的排序待办事项列表保存在 localStorage
- xml - 在 XML 节点内操作字符串
- node.js - Node JS res.send 不是一个函数
- reactjs - 使用样式化组件根据值设置输入样式
- out-of-memory - 飞轮本地 - 管理员 - 内存耗尽致命错误
- ibm-mq - 通过命令行创建 MQ 潜艇时获得“未授权”
- java - Java:返回从包含“目标”的“短语”中的任何元素中删除的 ArrayList。
- javascript - 如何在javascript中的过滤器方法中相乘
- python - Selenium Chromedriver 可执行文件需要在路径中(它是)
- opencv - 如何跟踪快速移动的物体?