Я заметил кое-что интересное при работе с spark-shell
, и мне интересно, почему это происходит.Я загружаю текстовый файл в Spark, используя основной синтаксис, а затем просто повторяю эту команду.Вывод REPL ниже:
scala> val myreviews = sc.textFile("Reviews.csv")
myreviews: org.apache.spark.rdd.RDD[String] = Reviews.csv MapPartitionsRDD[1] at textFile at <console>:24
scala> val myreviews = sc.textFile("Reviews.csv")
myreviews: org.apache.spark.rdd.RDD[String] = Reviews.csv MapPartitionsRDD[3] at textFile at <console>:24
scala> val myreviews = sc.textFile("Reviews.csv")
myreviews: org.apache.spark.rdd.RDD[String] = Reviews.csv MapPartitionsRDD[5] at textFile at <console>:24
scala> val myreviews = sc.textFile("Reviews.csv")
myreviews: org.apache.spark.rdd.RDD[String] = Reviews.csv MapPartitionsRDD[7] at textFile at <console>:24
Я знаю, что часть MapPartitionsRDD[X]
содержит X
в качестве идентификатора СДР.Однако, основываясь на этом сообщении SO об идентификаторах RDD , я ожидаю, что целочисленный идентификатор увеличивается на единицу каждый раз при создании нового RDD.Так почему же он увеличивается на 2?
Я предполагаю, что при загрузке текстового файла создается промежуточный СДР?Потому что создание RDD из parallelize()
только увеличивает счетчик RDD на 1 (до 7):
scala> val arrayrdd = sc.parallelize(Array(3,4,5))
arrayrdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[8] at parallelize at <console>:24
Примечание: я не верю, что число имеет отношение к разделам.Если я позвоню, я получу, что мой RDD разделен на 9 разделов:
scala> myreviews.partitions.size
res2: Int = 9