我知道我们可以在pyspark中将两个RDD组合在一起(如R中的cbind):
rdd3 = rdd1.zip(rdd2)
我想在pyspark中为两个Dstream执行相同的操作。是可能还是其他选择?
事实上,我正在使用MLlib随机森林模型来预测使用火花流。 最后,我想结合功能Dstream&预测Dstream一起进行进一步的下游处理。
提前致谢。
-Obaid
答案 0 :(得分:2)
最后,我在下面使用。
诀窍是使用“原生python地图”和“火花尖叫变换”。 可能不是一种优雅的方式,但它有效:)。
def predictScore(texts, modelRF):
predictions = texts.map( lambda txt : (txt , getFeatures(txt)) ).\
map(lambda (txt, features) : (txt ,(features.split(','))) ).\
map( lambda (txt, features) : (txt, ([float(i) for i in features])) ).\
transform( lambda rdd: sc.parallelize(\
map( lambda x,y:(x,y), modelRF.predict(rdd.map(lambda (x,y):y)).collect(),rdd.map(lambda (x,y):x).collect() )\
)\
)
# in the transform operation: x=text and y=features
# Return will be tuple of (score,'original text')
return predictions
希望,它会帮助那些面临同样问题的人。 如果有人有更好的想法,请在这里发布。
-Obaid
注意:我也在spark用户列表中提交了问题,并在那里发布了我的答案。