【问题标题】:Error regarding creating a jar file : Spark Scala关于创建 jar 文件的错误:Spark Scala
【发布时间】:2020-04-09 21:54:51
【问题描述】:

我已经内置了一个使用 Apache spark Scala 进行逻辑回归的代码。现在我将使用 IntelliJ IDEA 从中创建一个 jar 文件。但我遇到了一些错误。

首先,我使用 CSV 文件导入数据。然后我拟合了一个逻辑回归模型。之后我评估了模型。最后,我需要将模型评估结果保存到文本文件中。当我尝试将模型评估结果写入文件时出现错误。

这是我的 jar 文件:

    import org.apache.spark.ml.classification.LogisticRegression
    import org.apache.spark.ml.feature.FeatureHasher

    import org.apache.spark.{SparkConf, SparkContext}
    import org.apache.spark.sql.SparkSession


    object class1 {
      def main(args: Array[String]): Unit = {



          val sc: SparkSession = SparkSession.builder()
            .master("local[1]")
            .appName("SparkByExample")
            .getOrCreate()



          val df2 = sc.read.options(Map("inferSchema"->"true","sep"->",","header"->"true")).csv(args(0))
        val hasher = new FeatureHasher().setInputCols(Array("x1","x2")).setOutputCol("features")
        val transformed = hasher.transform(df2)

        val lr = new LogisticRegression().setMaxIter(100).setRegParam(0.1).
setElasticNetParam(0.6).setFeaturesCol("features").setLabelCol("automatic")
        val Array(train, test) = transformed.randomSplit(Array(0.9, 0.1))

        val lrModel = lr.fit(train)
        val result = lrModel.transform(test)

         val evaluator = new MulticlassClassificationEvaluator()
         evaluator.setLabelCol("automatic")
         evaluator.setMetricName("accuracy")
         val accuracy = evaluator.evaluate(result)

        accuracy.saveAsFiles(args(1))

      }

    }

我的错误如下:

[error] C:\Spark\src\main\scala\WordCount.scala:39:14: value saveAsFiles is not a member of Double
[error]     accuracy.saveAsFiles(args(1))
[error]              ^
[error] one error found
[error] (Compile / compileIncremental) Compilation failed

此错误暗示,我不能将 saveAsFiles 与双对象一起使用。

有人可以帮助我了解如何解决这个问题吗?

谢谢

【问题讨论】:

    标签: scala apache-spark intellij-idea


    【解决方案1】:

    accuracy 不再是 DataFrame。这只是一个简单的双倍。您可以使用常规 Scala 将其保存到文件中,例如

    Files.write(..., accuracy.toString)
    

    【讨论】:

      猜你喜欢
      • 2020-07-22
      • 2020-07-23
      • 1970-01-01
      • 2016-11-07
      • 2010-10-22
      • 1970-01-01
      • 2019-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多