結局、以下を使用しています。
トリックは、「ネイティブ 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
同じ問題に直面している誰かを助けることを願っています。誰かがより良いアイデアを持っている場合は、ここに投稿してください。
-オベイド
注:問題をsparkユーザーリストにも提出し、そこにも回答を投稿しました。