apache-spark - rdd后面的数字是什么意思

标签 apache-spark rdd

enter image description here

rdd后面括号里的数字是什么意思?

最佳答案

RDD后面的数字是它的标识符:

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.3.0
      /_/

Using Scala version 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_151)
Type in expressions to have them evaluated.
Type :help for more information.

scala> val rdd = sc.range(0, 42)
rdd: org.apache.spark.rdd.RDD[Long] = MapPartitionsRDD[1] at range at <console>:24

scala> rdd.id
res0: Int = 1

它用于在整个 session 中跟踪 RDD,例如用于缓存之类的目的:

scala> rdd.cache
res1: rdd.type = MapPartitionsRDD[1] at range at <console>:24

scala> rdd.count
res2: Long = 42

scala> sc.getPersistentRDDs
res3: scala.collection.Map[Int,org.apache.spark.rdd.RDD[_]] = Map(1 -> MapPartitionsRDD[1] at range at <console>:24)

这个数字很简单 incremental integer (nextRddId 只是一个 AtomicInteger):

private[spark] def newRddId(): Int = nextRddId.getAndIncrement()

生成when RDD is constructed :

/** A unique ID for this RDD (within its SparkContext). */
val id: Int = sc.newRddId()

所以如果我们遵循:

scala> val pairs1 = sc.parallelize(Seq((1, "foo")))
pairs1: org.apache.spark.rdd.RDD[(Int, String)] = ParallelCollectionRDD[2] at parallelize at <console>:24

scala> val pairs2 = sc.parallelize(Seq((1, "bar")))
pairs2: org.apache.spark.rdd.RDD[(Int, String)] = ParallelCollectionRDD[3] at parallelize at <console>:24


scala> pairs1.id
res5: Int = 2

scala> pairs2.id
res6: Int = 3

你会看到2和3,如果你执行

scala> pairs1.join(pairs2).foreach(_ => ())

您期望的是 4,这可以通过检查 UI 来确认:

enter image description here

我们还可以看到 join 在幕后创建了一些新的 RDD(56) .

关于apache-spark - rdd后面的数字是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48277531/

相关文章:

scala - Spark 单元测试失败,错误代码为 "ExceptionInInitializerError",最新版本为 "json4s-jackson"

scala - 如何将 double 组转换为 RDD[String]

scala - 创建数据帧时如何解决 scala.MatchError

apache-spark - Spark Kubernetes

sql - 如何使用pyspark从某些字段分组的给定数据集中获取max(date)?

python - 在工作节点上安装 SPARK 模块

hadoop - 试图让 Spark 流从网站读取数据流,套接字是什么?

scala - Spark - 另一个转换中的 Rdd 转换

scala - 错误 : org. apache.spark.rdd.RDD[(String,Int)] 不带参数

scala - Spark 流序列化错误