我想用spark制作数据报告。 我想做的概念如下。
case class output( txt: String)
outputList: List[output] = ..
myrdd
.filter( ..)
.map(
some processing
outputList ::= output( ..)
)
// this is why I cannot just union rdd with rdd
anotherRdd.map(
...some processing...
val rdd = ..make rdd from rdd..
rddinrdd.map(
...some processing...
outputList ::= output( ..)
)
)
// save it as text
..save outputList somehow..
我知道它不起作用,因为在存储所有输出之前会保存outputList,有没有办法做到这一点?
答案 0 :(得分:1)
你正在尝试做两件Spark不支持的事情:
outputList
)rddinrdd
不受支持 - 驱动程序端存在RDD,并且在执行程序上完成转换)很难在没有更具体要求的情况下提出替代方案,但通常情况下,你应该将RDD转换为RDD [输出] :这就是Spark的使用方式 - 不要试图构建outputList
,尝试通过转换构建outputRDD
。
对于第一个rdd,看起来很简单 - 而不是将output(..)
添加到列表中,只需将该函数设置为返回值 - 然后map
操作的结果将为{ {1}}
RDD[output]
对于第二个rdd,您可能必须加入某个键上的两个RDD,假设“..make rdd from rdd ..”使用{{中的当前记录1}},所以通常它看起来像:
val outRdd1: RDD[output] = myrdd
.filter( ..)
.map(
some processing
output( ..)
)
最后,您可以合并生成的RDD并使用anotherRdd