Как преобразовать искровой датафрейм [double, String] в LabeledPoint? - PullRequest
1 голос
/ 14 апреля 2019

Ниже приведен код, с которым я экспериментирую.Я пытаюсь конвертировать SalesData в CSV в DF, а затем в LabeledPoints.Однако на последнем шаге я получаю следующую ошибку компиляции

макросы пакета содержат объект и пакет с одинаковым именем: blackbox

Не могли бы вы дать мне подсказки о том, что я делаю неправильноВот ?Спасибо

- РЕДАКТИРОВАТЬ -
Проблема компиляции решена путем добавления 2,11 миллиллиба в build.gradle.но mlData.show завершается неудачно с

ОШИБКА: java.lang.ClassCastException: java.lang.String не может быть приведена к org.apache.spark.ml.linalg.Vector

    val path = "SalesData.csv"
    val conf = new SparkConf().setMaster("local[2]").set("deploy-mode", "client").set("spark.driver.bindAddress", "127.0.0.1")
      .set("spark.broadcast.compress", "false")
      .setAppName("local-spark-kafka-consumer-client")
  val sparkSession = SparkSession
      .builder()
      .config(conf)
      .getOrCreate()
    val data = sparkSession.read.format("csv").option("header", "true").option("inferSchema", "true").load(path)
    data.cache()
    import org.apache.spark.sql.DataFrameNaFunctions
    data.na.drop()
    data.show

    //get monthly sales totals 
    val summary = data.select("OrderMonthYear","SaleAmount").groupBy("OrderMonthYear").sum().orderBy("OrderMonthYear").toDF("OrderMonthYear","SaleAmount")
    summary.show

    // convert ordermonthyear to integer type
    //val results = summary.map(df => (df.getAs[String]("OrderMonthYear").replace("-", "") , df.getAs[String]("SaleAmount"))).toDF(["OrderMonthYear","SaleAmount"])
    import org.apache.spark.sql.functions._
    val test = summary.withColumn("OrderMonthYear", (regexp_replace(col("OrderMonthYear").cast("String"),"-",""))).toDF("OrderMonthYear","SaleAmount")
    test.printSchema()
    test.show
    import sparkSession.implicits._
    val mlData = test.select("OrderMonthYear", "SaleAmount").
                  map(row => org.apache.spark.ml.feature.LabeledPoint(
                              row.getAs[Double](1),
                              row.getAs[org.apache.spark.ml.linalg.Vector](0))).toDF
mlData.show
...