Я отредактировал свой ответ с примером кода. Извинения первая строка объединена с моим комментарием

ры заимствованы из Интернета, благодаря тем, кто лучше понимает.

Следующее можно найти на различных форумах в отношении mapPartitions и map:

... Consider the case of Initializing a database. If we are using map() or 
foreach(), the number of times we would need to initialize will be equal to 
the no of elements in RDD. Whereas if we use mapPartitions(), the no of times 
we would need to initialize would be equal to number of Partitions ...

Тогда есть этот ответ:

val newRd = myRdd.mapPartitions(
  partition => {

    val connection = new DbConnection /*creates a db connection per partition*/

    val newPartition = partition.map(
       record => {
         readMatchingFromDB(record, connection)
     })
    connection.close()
    newPartition
  })

Итак, мои вопросы после прочтения дискуссий по различным вопросам, относящимся к этому:

Хотя я могу понять улучшение производительности с помощью mapPartitions в целом, почему, согласно первому фрагменту текста, соединение с базой данных будет вызываться каждый раз для каждого элемента RDD, использующего map? Я не могу найти правильную причину.То же самое не происходит с sc.textFile ... и чтением в кадрах данных из соединений jdbc. Или это? Я был бы очень удивлен, если бы это было так.

Что мне не хватает ...?

Ответы на вопрос(2)

Ваш ответ на вопрос