Apache spark 使用foreachPartition管理多个数据库连接和数据

Apache spark 使用foreachPartition管理多个数据库连接和数据,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我会尽可能地把它弄清楚,这样就不需要一个例子,因为这必须是一个我没有正确理解的概念,我正在努力解决,而不是数据或Spark代码本身的问题 我被要求在他们自己的数据库(MongoDB)中插入城市数据,我正试图尽快完成这些更新 考虑以下示例数据框,其中我想对MongoDB做一些改进,例如,年,城市和区域 // the 'getDatabaseWriteConfigsPerCity' method filters the 'df' so it only contains the docs fr

我会尽可能地把它弄清楚,这样就不需要一个例子,因为这必须是一个我没有正确理解的概念,我正在努力解决,而不是数据或Spark代码本身的问题

我被要求在他们自己的数据库(MongoDB)中插入城市数据,我正试图尽快完成这些更新

考虑以下示例数据框,其中我想对MongoDB做一些改进,例如,城市区域

    // the 'getDatabaseWriteConfigsPerCity' method filters the 'df' so it only contains the docs from a single city.
    for (cityDBConnection <- getDatabaseWriteConfigsPerCity(df) {
        cityDBConnection.getDf.foreach(
            ... // set MongoDB upsert criteria.
        )
    }
年份-城市-区域-数量商业-数量车辆

拥有groupedBy我正在等待的那些列,以便向数据库执行向上插入

使用MongoDB驱动程序,我需要实例化几个WriteConfig来处理多个数据库(每个城市1个数据库)

//getDatabaseWriteConfigsPerCity方法过滤“df”,使其仅包含来自单个城市的文档。
用于(城市数据库连接)
有什么方法可以确保分区包含
与upsert密钥相关的文档?如果您这样做:

您可以确保具有相同
city
的所有记录都在同一分区中(但每个分区可能有多个
city

有什么方法可以确保分区包含 与upsert密钥相关的文档?如果您这样做:


你可以确定所有具有相同
city
的记录都在同一个分区中(但每个分区可能不止一个
city

那么简单!?天哪,我似乎还需要仔细阅读API。非常感谢!:)那么简单!?天啊,看来我还需要好好阅读API。非常感谢!:)
df.repartition("city").foreachPartition{...}