我正在尝试使用保存的Mllib模型来预测实时流数据的情绪。
我尝试了所有发现的建议,但仍然出现错误。 当前错误:字段“功能”不存在。
训练数据的模式是
root
|-- label: double (nullable = true)
|-- words: array (nullable = true)
| |-- element: string (containsNull = true)
|-- features: vector (nullable = true)
lines = spark\
.readStream\
.format("kafka")\
.option("kafka.bootstrap.servers", bootstrapServers)\
.option("subscribe", topics)\
.load()\
.selectExpr("CAST(value AS STRING)")
#<class 'pyspark.sql.dataframe.DataFrame'>
read_data=lines.selectExpr("CAST(value AS STRING) as text")
model_nb = NaiveBayesModel.load("./myNBmodel")
prediction = model_nb.transform(read_data)
print(prediction.schema)
query1 = prediction.writeStream \
.outputMode("update") \
.foreach(process_row) \
.start()
query1.awaitTermination()
prediction = model_nb.transform(read_data)
:Py4JJavaError:调用o133.transform时发生错误。 :java.lang.IllegalArgumentException:字段“功能”不存在。 可用字段:文本
被绑住的数据不需要功能就可以进行预测,对吧?
答案 0 :(得分:0)
被绑住的数据不需要功能就可以进行预测,对吧?
那是相当不正确的。
原始数据必须“具有特征”,这就是为什么您应该使用Spark MLlib的ML Pipelines,所以由Spark来完成此“特征化”而不是您:
机器学习管道提供了一组统一的基于API的高级API,可帮助用户创建和调整实用的机器学习管道。
MLlib标准化了用于机器学习算法的API,从而使将多种算法组合到单个管道或工作流程中变得更加容易。