猿问

PySpark 在独立模式下连接到 MongoDB,在集群模式下失败

我有一个PySpark脚本,可以从MongoDB数据库读取集合。当我在独立模式下运行脚本时,它的工作原理是:


  MONGO_URL = "mongodb://USER:PASSWORD@HOST:27017/DB_NAME.COLLECTION"

  spark = SparkSession.builder \

            .appName('TestMongoLoad') \

            .config('spark.mongodb.input.uri', MONGO_URL) \

            .getOrCreate()


    df = spark.read.format("com.mongodb.spark.sql.DefaultSource").load()



spark-submit \

--master local[*] \

--packages org.mongodb.spark:mongo-spark-connector_2.11:2.4.1 \

load_from_mongo.py 


[SUCCESS]


当我在群集上运行脚本时,它失败了:


spark-submit \

--master yarn \

--deploy-mode client \

--driver-memory 4g \

--executor-memory 2g \

--executor-cores 3 \

--num-executors 10 \

--packages org.mongodb.spark:mongo-spark-connector_2.11:2.4.1 \

load_from_mongo.py


拉莫斯之舞
浏览 144回答 1
1回答

慕慕森

正确的答案是,集群的名称(主)节点具有对MongoDB实例的防火墙访问权限,但集群中的其他节点没有。因此,显然MongoDB查询也分布在集群上。一旦我将从属节点添加到MongoDB服务器的安全组作为允许的传入连接,集群模式处理就开始工作了。
随时随地看视频慕课网APP

相关分类

Python
我要回答