Java Spark-如何为每个执行器上下文创建不同的变量?

Java Spark-如何为每个执行器上下文创建不同的变量?,java,mongodb,apache-spark,Java,Mongodb,Apache Spark,我的Spark应用程序启动了几个执行者。 我有几个分区分散在我的执行者身上 在这些分区上使用map()时,我希望使用MongoDB连接()并从那里查询更多数据,处理这些数据并将其作为map()函数的输出返回 我想为每个执行者创建一个连接。 然后,每个分区都应该访问这个executor局部变量,并使用它来查询数据 为每个分区建立连接可能不是一个好主意。广播连接也不会工作,因为它是不可序列化的(我想?) 总而言之: 如何为每个执行器上下文创建不同的变量 您应该使用 它将处理集合的创建,并由一个缓存

我的Spark应用程序启动了几个执行者。 我有几个分区分散在我的执行者身上

在这些分区上使用map()时,我希望使用MongoDB连接()并从那里查询更多数据,处理这些数据并将其作为map()函数的输出返回

我想为每个执行者创建一个连接。 然后,每个分区都应该访问这个executor局部变量,并使用它来查询数据

为每个分区建立连接可能不是一个好主意。广播连接也不会工作,因为它是不可序列化的(我想?)

总而言之:

  • 如何为每个执行器上下文创建不同的变量
您应该使用

它将处理集合的创建,并由一个缓存支持,该缓存可以有效地处理任何MongoClient的关闭。它是可序列化的,因此它可以是广播,并且可以使用选项、readConfig或Spark上下文来配置连接到何处

MongoConnector
使用loan模式处理与MongoDB的底层连接的引用管理,并允许在
MongoClient
MongoDatabase
MongoCollection
级别进行访问。

是否使用了map()或mapPartitions()?