【问题标题】:Combining Spark Streaming + MLlib结合 Spark Streaming + MLlib
【发布时间】:2016-08-18 16:38:50
【问题描述】:

我尝试使用随机森林模型来预测示例流,但我似乎无法使用该模型对示例进行分类。 这是pyspark中使用的代码:

sc = SparkContext(appName="App")

model = RandomForest.trainClassifier(trainingData, numClasses=2, categoricalFeaturesInfo={}, impurity='gini', numTrees=150)


ssc = StreamingContext(sc, 1)
lines = ssc.socketTextStream(hostname, int(port))

parsedLines = lines.map(parse)
parsedLines.pprint()

predictions = parsedLines.map(lambda event: model.predict(event.features))

以及在集群中编译时返回的错误:

  Error : "It appears that you are attempting to reference SparkContext from a broadcast "
    Exception: It appears that you are attempting to reference SparkContext from a broadcast variable, action, or transformation. SparkContext can only be used on the driver, not in code that it run on workers. For more information, see SPARK-5063.

有没有办法使用从静态数据生成的模型来预测流示例?

谢谢大家,我真的很感激!!!!

【问题讨论】:

标签: python apache-spark pyspark spark-streaming apache-spark-mllib


【解决方案1】:

是的,您可以使用从静态数据生成的模型。您遇到的问题根本与流媒体无关。您根本不能在动作或转换中使用基于 JVM 的模型(请参阅 How to use Java/Scala function from an action or a transformation? 了解原因)。相反,您应该将predict 方法应用于完整的RDD,例如在DStream 上使用transform

from pyspark.mllib.tree import RandomForest
from pyspark.mllib.util import MLUtils
from pyspark import SparkContext
from pyspark.streaming import StreamingContext
from operator import attrgetter


sc = SparkContext("local[2]", "foo")
ssc = StreamingContext(sc, 1)

data = MLUtils.loadLibSVMFile(sc, 'data/mllib/sample_libsvm_data.txt')
trainingData, testData = data.randomSplit([0.7, 0.3])

model = RandomForest.trainClassifier(
    trainingData, numClasses=2, nmTrees=3
)

(ssc
    .queueStream([testData])
    # Extract features
    .map(attrgetter("features"))
    # Predict 
    .transform(lambda _, rdd: model.predict(rdd))
    .pprint())

ssc.start()
ssc.awaitTerminationOrTimeout(10)

【讨论】:

猜你喜欢
  • 2016-01-24
  • 2016-02-20
  • 2016-03-07
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 2015-02-23
  • 2017-12-20
  • 2018-02-17
相关资源
最近更新 更多