Из этого поста Как долго СДР остается в памяти? , я хотел бы знать, основываясь на следующем:
СДР является объектом, как и любой другой.Если вы не сохраните / не кешируете его, он будет действовать так же, как и любой другой объект в управляемом языке, и будет собираться, если на него не останется живых корневых объектов?
Что означает точно на раз нет живых корневых объектов, указывающих на него ?
- Например, когда действие было завершено?
- Или, если преобразования были выполнены успешно?
Я прочитал столько, сколько смог найти,но считаю, что всегда есть открытая проблема в моей голове.Ответ известного эксперта заставляет меня задуматься о том, что я не могу выселить.
Когда создается родословная СДР?Как найти график родословной? пример отличный, повторно представлен здесь:
val nums = sc.parallelize(0 to 9)
scala> nums.toDebugString
res0: String = (8) ParallelCollectionRDD[0] at parallelize at <console>:24 []
val doubles = nums.map(_ * 2)
scala> doubles.toDebugString
res1: String =
(8) MapPartitionsRDD[1] at map at <console>:25 []
| ParallelCollectionRDD[0] at parallelize at <console>:24 []
val groups = doubles.groupBy(_ < 10)
scala> groups.toDebugString
res2: String =
(8) ShuffledRDD[3] at groupBy at <console>:25 []
+-(8) MapPartitionsRDD[2] at groupBy at <console>:25 []
| MapPartitionsRDD[1] at map at <console>:25 []
| ParallelCollectionRDD[0] at parallelize at <console>:24 []
Если предположить, что каждое преобразование занимает длительный период для фактического выполнения, то когда можно ... RDD [0] будетвыселили?Это самый ранний момент времени.Дело в том, что ... RDD [0] является родителем для ... RDD [1..N] или родителем для всех таких объектов?Я утверждаю это, как я нашел такое заявление в другом месте.
Я не думаю, что это дубликат, он ищет разъяснения по указанному заявлению.
Моя интерпретация заключается в том, что термин корневой объект подразумевает, что RDD [0] не может подвергаться сборке мусора до тех пор, пока не произойдет действие, или не произойдет кэш или контрольная точка в пути DAG действия.Ищу подтверждения по этому вопросу.Предложение для меня о том, что является корневым объектом, теперь неясно.Я бы подумал, что корневые объекты - это более ранние RDD в цепочке.