Apache spark 如何使用Pyspark组合两个数据流(类似于普通RDD上的.zip)

Apache spark 如何使用Pyspark组合两个数据流(类似于普通RDD上的.zip),apache-spark,zip,streaming,pyspark,dstream,Apache Spark,Zip,Streaming,Pyspark,Dstream,我知道我们可以在pyspark中组合(如R中的cbind)两个RDD,如下所示: rdd3 = rdd1.zip(rdd2) 我想对pyspark中的两个数据流执行相同的操作。这是可能的还是有其他选择 事实上,我正在使用MLlib随机森林模型来预测火花流。 最后,我想将特征数据流和预测数据流组合在一起,以便进行进一步的下游处理 提前谢谢 -Obaid最后,我使用下面的方法 诀窍是使用“原生python映射”和“spark spreaming转换”。 可能不是一个优雅的方式,但它的工作:) 希望

我知道我们可以在pyspark中组合(如R中的cbind)两个RDD,如下所示:

rdd3 = rdd1.zip(rdd2)
我想对pyspark中的两个数据流执行相同的操作。这是可能的还是有其他选择

事实上,我正在使用MLlib随机森林模型来预测火花流。 最后,我想将特征数据流和预测数据流组合在一起,以便进行进一步的下游处理

提前谢谢


-Obaid

最后,我使用下面的方法

诀窍是使用“原生python映射”和“spark spreaming转换”。 可能不是一个优雅的方式,但它的工作:)

希望它能帮助那些面临同样问题的人。 如果有人有更好的想法,请把它贴在这里

-奥贝德


注意:我也在spark用户列表中提交了问题,并在那里发布了我的答案。

您能用scala编写解决方案吗?
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