【问题标题】:toDF is not working in spark scala ide , but works perfectly in spark-shell [duplicate]toDF 在 spark scala ide 中不工作,但在 spark-shell 中完美工作 [重复]
【发布时间】:2020-06-19 09:18:31
【问题描述】:

我是 Spark 的新手,我正在尝试从 spark-shell 和 spark scala eclipse ide 运行以下命令

当我从 shell 运行它时,它完美运行。

但在 ide 中,它给出了编译错误。 请帮忙

    package sparkWCExample.spWCExample

    import org.apache.log4j.Level
    import org.apache.spark.sql.{ Dataset, SparkSession, DataFrame, Row }
    import org.apache.spark.sql.functions._
    import org.apache.spark.SparkContext
    import org.apache.spark.SparkConf
    import org.apache.spark.sql._

    object TwitterDatawithDataset {
      def main(args: Array[String]) {
        val conf = new SparkConf()
            .setAppName("Spark Scala WordCount Example")
            .setMaster("local[1]")
        val spark = SparkSession.builder()
            .config(conf)
            .appName("CsvExample")
            .master("local")
            .getOrCreate()
        val csvData = spark.sparkContext
            .textFile("C:\\Sankha\\Study\\data\\bank_data.csv", 3)

val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
        case class Bank(age: Int, job: String)
        val bankDF = dfData.map(x => Bank(x(0).toInt, x(1)))
        val df = bankDF.toDF()
      }
    }

编译时本身的异常如下

描述资源路径位置类型 值 toDF 不是 org.apache.spark.rdd.RDD[Bank] TwitterDatawithDataset.scala /spWCExample/src/main/java/sparkWCExample/spWCExample 第 35 行 Scala 问题的成员

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    对于toDF(),您必须启用隐式转换:

    import spark.implicits._
    

    spark-shell 中,它默认启用,这就是代码在那里工作的原因。 :imports 命令可用于查看您的 shell 中已经存在哪些导入:

    scala> :imports
     1) import org.apache.spark.SparkContext._ (70 terms, 1 are implicit)
     2) import spark.implicits._       (1 types, 67 terms, 37 are implicit)
     3) import spark.sql               (1 terms)
     4) import org.apache.spark.sql.functions._ (385 terms)
    

    【讨论】:

    • 我也这样做了,但仍然出现异常,我已经更新了上面的代码
    • @user1670805 您的代码不可编译,因为new org.apache.spark.sql.SQLContext(sc) 指的是未定义的变量sc
    • 你如何制作 dfData ?我在上面的代码中看不到
    【解决方案2】:

    这在 Eclipse Scala IDE 中对我来说很好用:

    case class Bank(age: Int, job: String)
    val u = Array((1, "manager"), (2, "clerk"))
    import spark.implicits._
    spark.sparkContext.makeRDD(u).map(r => Bank(r._1, r._2)).toDF().show()
    

    【讨论】:

      猜你喜欢
      • 2016-01-13
      • 2016-11-11
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多