首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Scala:case类runTime错误

Scala:case类runTime错误
EN

Stack Overflow用户
提问于 2015-07-02 05:09:15
回答 1查看 213关注 0票数 1

这个演示运行正常。但是,当我将它移到另一个类函数(我以前的项目)并调用该函数时,它会编译失败。

代码语言:javascript
代码运行次数:0
运行
复制
     object DFMain {
         case class Person(name: String, age: Double, t:String)
         def main (args: Array[String]): Unit = {
         val sc = new SparkContext("local", "Scala Word Count")
         val sqlContext = new org.apache.spark.sql.SQLContext(sc)
         import sqlContext.implicits._
         val bsonRDD = sc.parallelize(("foo",1,"female")::
                                        ("bar",2,"male")::
                                     ("baz",-1,"female")::Nil)
                      .map(tuple=>{
                    var bson = new BasicBSONObject()
                    bson.put("name","bfoo")
                    bson.put("value",0.1)
                    bson.put("t","female")
                    (null,bson)
                 })
    val tDf = bsonRDD.map(_._2)
              .map(f=>Person(f.get("name").toString,
                   f.get("value").toString.toDouble,
                   f.get("t").toString)).toDF()

       tDf.limit(1).show()
 }
}

'MySQLDao.insertIntoMySQL()‘编译错误

代码语言:javascript
代码运行次数:0
运行
复制
object MySQLDao {
     private val sc= new SparkContext("local", "Scala Word Count")
     val sqlContext = new org.apache.spark.sql.SQLContext(sc)
     import sqlContext.implicits._

     case class Person(name: String, age: Double, t:String)
     def insertIntoMySQL(): Unit ={

      val bsonRDD = sc.parallelize(("foo",1,"female")::
                                     ("bar",2,"male")::
                                     ("baz",-1,"female")::Nil)
                       .map(tuple=>{
               val bson = new BasicBSONObject()
               bson.put("name","bfoo")
               bson.put("value",0.1)
               bson.put("t","female")
               (null,bson)
         })
 val tDf = bsonRDD.map(_._2).map( f=> Person(f.get("name").toString,
                                           f.get("value").toString.toDouble,
                                            f.get("t").toString)).toDF()

   tDf.limit(1).show()

 }
} 

,当我调用'MySQLDao.insertIntoMySQL()‘时,将得到

值typedProductIterator不是对象scala.runtim.scala.scalaRuntTime的成员。

案例类人(姓名: String,年龄: Double,t:String)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-02 17:10:58

我认为在map函数中的闭包中看不到case类。将其移动到包级别。

代码语言:javascript
代码运行次数:0
运行
复制
case class Person(name: String, age: Double, t:String)
object MySQLDao {
...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31176002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档