【发布时间】:2019-08-01 20:48:53
【问题描述】:
当我尝试使用 Mmngo-spark connector_2.11:2.2.7 从 mongoDB 读取时遇到错误。
在初始化 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 读取数据没有问题。有什么想法吗?
【问题讨论】:
标签: python mongodb apache-spark hadoop pyspark