"淘宝双11数据分析与预测课程案例—步骤四:利用Spark预测回头客行为"代码报错

在练习林子雨老师的“淘宝双11数据分析与预测课程案例—步骤四:利用Spark预测回头客行为”章节时出现了代码报错。

具体在执行"val model = SVMWithSGD.train(train, numIterations)"代码后出现了如下报错:

java.lang.NumberFormatException: For input string: "Label"


查找相关资料说是因为格式转换的问题,即可能是应该输入“整型”却意外的输入了"label"

代码执行过程如下:

    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext
    import org.apache.spark.mllib.regression.LabeledPoint
    import org.apache.spark.mllib.linalg.{Vectors,Vector}
    import org.apache.spark.mllib.classification.{SVMModel, SVMWithSGD}
    import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics
    import java.util.Properties
    import org.apache.spark.sql.types._
    import org.apache.spark.sql.Row
    val train_data = sc.textFile("/dbtaobao/dataset/train_after.csv")
    val test_data = sc.textFile("/dbtaobao/dataset/test_after.csv")
    val train= train_data.map{line =>
      val parts = line.split(',')
      LabeledPoint(parts(4).toDouble,Vectors.dense(parts(1).toDouble,parts
    (2).toDouble,parts(3).toDouble))
    }
    val test = test_data.map{line =>
      val parts = line.split(',')
      LabeledPoint(parts(4).toDouble,Vectors.dense(parts(1).toDouble,parts(2).toDouble,parts(3).toDouble))
    }
    val numIterations = 1000
    val model = SVMWithSGD.train(train, numIterations)

数据从HDFS文件系统中train_after.csv取出然后存入train_data进入分割,在之后的过程中都没有混入除了整型以外的变量。分析原因可能是HDFS文件系统中train_after.csv本来就有非整型变量,由于HDFS文件系统中train_after.csv是由本地文件夹下的train_after.csv原封不动导入的,所以我打开train_after.csv,结果发现该文件的第一行代表该列的属性为string类型没有删干净,问题就出现在这里,随后我将列的属性删除完毕,重新生成了train_after.csv文件,此时文件中除了整型不含其它类型,我再将HDFS文件系统中的train_after.csv删除并导入我重新生成的train_after.csv文件,最后问题得到解决。

删除HDFS文件系统中的文件操作可参考:


你可能感兴趣的:(大数据处理技术,Spark,Scala)