【发布时间】:2016-01-18 21:54:41
【问题描述】:
只是想澄清一些事情,一些容易得到的结果,一个问题是通过观察用户在另一个问题中尝试对广播变量调用 RDD 操作而产生的?不对吧?
问题是:Spark 广播变量不是 RDD,对吗?这是 Scala 中的集合,我没看错吗?
查看 Scala 文档:http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.broadcast.Broadcast
所以它具有创建时分配的任何子类型,传递给它的任何子类型?就像这是一个 Java ArrayList 一样,它会是一个整数的 ArrayList?所以
sc.broadcast([0,1,2]) 会在 scala-notation 中创建一个 Broadcast[Array[Int]]?
scala> val broadcastVar = sc.broadcast(Array(1, 2, 3))
broadcastVar: org.apache.spark.broadcast.Broadcast[Array[Int]] = Broadcast(0)
scala> broadcastVar.value
res0: Array[Int] = Array(1, 2, 3)
(我确实搜索了相当多的明确直截了当的答案,但它一定是一个太基本的问题,但理解起来很重要,谢谢。)
如果有一些关于 Python 对广播的作用的信息会很好但没必要,我假设它调用了底层的 Scala 类,并且在底层存储为 Scala 广播类型?
【问题讨论】:
-
是的,它不是 rdd,它只是创建和销毁每个执行器上的所有数据。是的,python api 只是在下面调用 scala 代码。
标签: java python scala apache-spark