Sparkr 将广播 RDD 转换为实际值

Sparkr convert broadcast RDD to actual value

我在我的程序中向工作节点发送了广播 BC

BC= SparkR:::broadcast(sc, data)

我有一个功能

myF=function(x)
{
    allV=SparkR:::value(BC)
    ..... Use allV ......
    return(result)
}

然后我调用了这个函数

finalResult = SparkR:::lapply(currentRDD, myF)

但是,错误信息告诉我allV仍然是PipelineRDD,如何将allV转换为实际数据的正确方法是什么?

非常感谢!!

据我了解,您正在尝试广播 RDD,这是完全没有意义的。 RDD 只是一个配方或对转换的描述,不包含实际数据。

要获得结果,您必须触发一个操作,例如 collect,但 Spark 不支持嵌套操作或转换,因此您无法实现您想要实现的目标。

如果数据小到可以在本地处理,您应该 collect 首先广播一个本地数据结构。如果不可能,你可以 join RDDs。

再一次,内部 API 是内部的原因:)