Apache spark 函数体中的Pyspark程序失败

Apache spark 函数体中的Pyspark程序失败,apache-spark,pyspark,spark-dataframe,apache-spark-mllib,pipeline,Apache Spark,Pyspark,Spark Dataframe,Apache Spark Mllib,Pipeline,我是PySpark实现ML算法的新手。我正在尝试创建一个分类模型,可以是任何逻辑、随机森林、多类分类器等。我现在已经用RandomForestClassifier编写了一个代码 问题:数据预处理步骤StandardScaler在逐行运行时运行,但在尝试在函数调用中运行时失败。示例代码和错误描述: def预处理数据(数据=“”,所有列=“”,分类列=“”): #预处理客户数据 打印(“为模型拟合准备数据”) #组装数据帧 打印(“组装数据”) 汇编器=矢量汇编器(inputCols=all_col

我是PySpark实现ML算法的新手。我正在尝试创建一个分类模型,可以是任何逻辑、随机森林、多类分类器等。我现在已经用RandomForestClassifier编写了一个代码

问题:数据预处理步骤StandardScaler在逐行运行时运行,但在尝试在函数调用中运行时失败。示例代码和错误描述:

def预处理数据(数据=“”,所有列=“”,分类列=“”):
#预处理客户数据
打印(“为模型拟合准备数据”)
#组装数据帧
打印(“组装数据”)
汇编器=矢量汇编器(inputCols=all_cols,outputCol=“assmbldFeatures”)
#数据标准化
打印(“标准化和缩放数据”)
stdScaler=StandardScaler(inputCol=assembler.getOutputCol(),outputCol=“stdScldFeatures”,带std=True,带mean=False)
#最小最大定标器
打印(“执行最小-最大缩放”)
minMaxScaler=minMaxScaler(inputCol=stdScaler.getOutputCol(),outputCol=“minMaxScldFeatures”)
管道=管道(阶段=[汇编程序、stdScaler、minMaxScaler])
prcsdData=pipeline.fit(数据).transform(数据)
返回PRCSD数据
即使使用管道并对步骤进行排序,也会失败。请告知。我基本上是在尝试模块化代码

error:
Performing min max scaling.
[Stage 0:==============================================>          (13 + 2) / 16]18/05/02 05:13:42 WARN TaskSetManager: Lost task 0.0 in stage 1.0 (TID 16, lx955.mutualofomaha.com, executor 2): java.lang.IllegalArgumentException: requirement failed: Vector should have dimension larger than zero.
        at scala.Predef$.require(Predef.scala:224)
        at org.apache.spark.mllib.stat.MultivariateOnlineSummarizer.add(MultivariateOnlineSummarizer.scala:74)
        at org.apache.spark.mllib.stat.MultivariateOnlineSummarizer.add(MultivariateOnlineSummarizer.scala:67)
        at org.apache.spark.mllib.feature.StandardScaler$$anonfun$2.apply(StandardScaler.scala:58)
        at org.apache.spark.mllib.feature.StandardScaler$$anonfun$2.apply(StandardScaler.scala:58)
        at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:157)
        at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:157)
        at scala.collection.Iterator$class.foreach(Iterator.scala:893)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
        at scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:157)
        at scala.collection.AbstractIterator.foldLeft(Iterator.scala:1336)
        at scala.collection.TraversableOnce$class.aggregate(TraversableOnce.scala:214)
        at scala.collection.AbstractIterator.aggregate(Iterator.scala:1336)     


请发一封信。看起来您的数据有问题。@user9613318希望新的编辑有帮助。有人知道这个答案吗?我在这里也面临同样的问题。管道在函数体外部工作,但当包装在类的函数中时,它会失败,错误为“向量的维数应大于零”
|incm|incm_2|med|age
|56  |  181 |18 |47
|46  |  198 |31 |54
|91  |  742 |54 |45
|54  |  187 |55 |57
|58  |  123 |61 |48
|50  |  196 |49 |44
|32  |  145 |39 |55
|30  |  101 |29 |55
|62  |  177 |44 |53
|53  |  140 |30 |57