Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 将Spark数据帧转换为向量_Apache Spark_Pyspark_Apache Spark Sql_Spark Streaming - Fatal编程技术网

Apache spark 将Spark数据帧转换为向量

Apache spark 将Spark数据帧转换为向量,apache-spark,pyspark,apache-spark-sql,spark-streaming,Apache Spark,Pyspark,Apache Spark Sql,Spark Streaming,我想使用一个简单的分类器模型来预测Sparkdataframe的输出类。我使用Spark 2.1.0的结构化流媒体功能 当我尝试这样做时: tokenizer = Tokenizer(inputCol="message", outputCol="logTokenize") tokenizeData = tokenizer.transform(stream_df) hashingTF = HashingTF(inputCol="logTokeni

我想使用一个简单的分类器模型来预测Spark
dataframe
的输出类。我使用Spark 2.1.0的结构化流媒体功能

当我尝试这样做时:

tokenizer = Tokenizer(inputCol="message", outputCol="logTokenize")
tokenizeData = tokenizer.transform(stream_df)

hashingTF = HashingTF(inputCol="logTokenize", outputCol="rawFeatures", numFeatures = 1000)
featurizedData = hashingTF.transform(tokenizeData)
stream_df = featurizedData.select("rawFeatures")

path = "/tmp/NaiveClassifier"
naive_classifier_model = NaiveBayesModel.load(spark.sparkContext, path)

predictions = naive_classifier_model.predict(stream_df)

我收到以下错误消息:

TypeError:无法将类型转换为向量

stream\u df
是一个Spark数据帧,我想得到一个包含
rawFeatures
和预测类列的数据帧。

使用pyspark.ml.feature.VectorAssembler转换为向量

from pyspark.ml.feature import VectorAssembler
vecAssembler = VectorAssembler(inputCols=['rawFeatures'], outputCol="features")
stream_df = vecAssembler.transform(featurizedData)
此外,您正在使用Tokenzier,拥有TF变压器。所以,我相信你可以用管道把所有的变压器连接在一起

这只是一个建议。看看。

使用pyspark.ml.feature.VectorAssembler转换为向量

from pyspark.ml.feature import VectorAssembler
vecAssembler = VectorAssembler(inputCols=['rawFeatures'], outputCol="features")
stream_df = vecAssembler.transform(featurizedData)
此外,您正在使用Tokenzier,拥有TF变压器。所以,我相信你可以用管道把所有的变压器连接在一起

这只是一个建议。看看。

尝试使用浮点:

path = "/tmp/NaiveClassifier"
naive_classifier_model = NaiveBayesModel.load(spark.sparkContext,path)

prediction= stream_df.rdd.map(lambda p:(float(naive_classifier_model.predict(p.rawFeatures))))
尝试使用float:

path = "/tmp/NaiveClassifier"
naive_classifier_model = NaiveBayesModel.load(spark.sparkContext,path)

prediction= stream_df.rdd.map(lambda p:(float(naive_classifier_model.predict(p.rawFeatures))))

我以前试过,我认为问题在于Naive classifier对象,当我试图调用
Naive\u classifier\u model.fit(stream\u df)
时,我遇到了一个错误,我想我不能用
向量汇编程序的输出调用
predict
函数。是的,使用管道更好,但目前我这样做是为了调试。在尝试使用vectorassembler时,您会遇到相同的错误?我也面临同样的问题。即使在将dataframe列转换为vector并将其挑出之后,我仍然发现
无法将类型转换为vector
。在我的例子中,我使用的是pyspark.mllib.stat中的
Statistics.chiSqTest()
from
from
from
from
我以前试过,我认为问题在于Naive classifier对象,当我尝试调用
Naive\u classifier\u model.fit(stream\u df)时
我遇到了一个错误,我想我不能用
矢量汇编程序的输出调用
predict
函数。是的,使用管道更好,但目前我这样做是为了调试。在尝试使用vectorassembler时,您会遇到相同的错误?我也面临同样的问题。即使在将dataframe列转换为vector并将其挑出之后,我仍然发现
无法将类型转换为vector
。在我的例子中,我使用pyspark.mllib.stat的
中的
Statistics.chiSqTest()
,当我尝试这样做时,我得到了以下错误消息:
'DataFrame'对象没有属性“map”
,我使用结构化流。在编程指南中,我们可以应用data Frame的
map
功能。您使用的Spark版本是什么?试试这个-
prediction=stream\u df.rdd.map(lambda p:(float(naive\u classifier\u model.predict(p.rawFeatures)))
Spark 2删除了来自数据帧的直接映射我在尝试时收到以下错误消息:
'dataframe'对象没有属性'map'
,我使用结构化流。在编程指南中,我们可以应用data Frame的
map
功能。您使用的Spark版本是什么?试试这个-
prediction=stream\u df.rdd.map(lambda p:(float(naive\u classifier\u model.predict(p.rawFeatures)))
Spark 2删除了来自数据帧的直接映射