I believe what Dean Wampler was suggesting is to use the sqlContext not the sparkContext (sc), which is where the createDataFrame function resides:
https://spark.apache.org/docs/1.3.1/api/scala/index.html#org.apache.spark.sql.SQLContext HTH. -Todd On Wed, May 13, 2015 at 6:00 AM, SLiZn Liu <sliznmail...@gmail.com> wrote: > Additionally, after I successfully packaged the code, and submitted via > spark-submit > webcat_2.11-1.0.jar, the following error was thrown at the line where > toDF() been called: > > Exception in thread "main" java.lang.NoSuchMethodError: > scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaUniverse$JavaMirror; > at WebcatApp$.main(webcat.scala:49) > at WebcatApp.main(webcat.scala) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at > org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:569) > at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166) > at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189) > at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110) > at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) > > Unsurprisingly, if I remove toDF, no error occurred. > > I have moved the case class definition outside of main but inside the > outer object scope, and removed the provided specification in build.sbt. > However, when I tried *Dean Wampler*‘s suggestion of using > sc.createDataFrame() the compiler says this function is not a member of sc, > and I cannot find any reference in the latest documents. What else should I > try? > > REGARDS, > Todd Leo > > > On Wed, May 13, 2015 at 11:27 AM SLiZn Liu <sliznmail...@gmail.com> wrote: > >> Thanks folks, really appreciate all your replies! I tried each of your >> suggestions and in particular, *Animesh*‘s second suggestion of *making >> case class definition global* helped me getting off the trap. >> >> Plus, I should have paste my entire code with this mail to help the >> diagnose. >> >> REGARDS, >> Todd Leo >> >> >> On Wed, May 13, 2015 at 12:10 AM Dean Wampler <deanwamp...@gmail.com> >> wrote: >> >>> It's the import statement Olivier showed that makes the method >>> available. >>> >>> Note that you can also use `sc.createDataFrame(myRDD)`, without the need >>> for the import statement. I personally prefer this approach. >>> >>> Dean Wampler, Ph.D. >>> Author: Programming Scala, 2nd Edition >>> <http://shop.oreilly.com/product/0636920033073.do> (O'Reilly) >>> Typesafe <http://typesafe.com> >>> @deanwampler <http://twitter.com/deanwampler> >>> http://polyglotprogramming.com >>> >>> On Tue, May 12, 2015 at 9:33 AM, Olivier Girardot <ssab...@gmail.com> >>> wrote: >>> >>>> you need to instantiate a SQLContext : >>>> val sc : SparkContext = ... >>>> val sqlContext = new SQLContext(sc) >>>> import sqlContext.implicits._ >>>> >>>> Le mar. 12 mai 2015 à 12:29, SLiZn Liu <sliznmail...@gmail.com> a >>>> écrit : >>>> >>>>> I added `libraryDependencies += "org.apache.spark" % "spark-sql_2.11" >>>>> % "1.3.1"` to `build.sbt` but the error remains. Do I need to import >>>>> modules other than `import org.apache.spark.sql.{ Row, SQLContext }`? >>>>> >>>>> On Tue, May 12, 2015 at 5:56 PM Olivier Girardot <ssab...@gmail.com> >>>>> wrote: >>>>> >>>>>> toDF is part of spark SQL so you need Spark SQL dependency + import >>>>>> sqlContext.implicits._ to get the toDF method. >>>>>> >>>>>> Regards, >>>>>> >>>>>> Olivier. >>>>>> >>>>>> Le mar. 12 mai 2015 à 11:36, SLiZn Liu <sliznmail...@gmail.com> a >>>>>> écrit : >>>>>> >>>>>>> Hi User Group, >>>>>>> >>>>>>> I’m trying to reproduce the example on Spark SQL Programming Guide >>>>>>> <https://spark.apache.org/docs/latest/sql-programming-guide.html#inferring-the-schema-using-reflection>, >>>>>>> and got a compile error when packaging with sbt: >>>>>>> >>>>>>> [error] myfile.scala:30: value toDF is not a member of >>>>>>> org.apache.spark.rdd.RDD[Person] >>>>>>> [error] val people = >>>>>>> sc.textFile("examples/src/main/resources/people.txt").map(_.split(",")).map(p >>>>>>> => Person(p(0), p(1).trim.toInt)).toDF() >>>>>>> [error] >>>>>>> ^ >>>>>>> [error] one error found >>>>>>> [error] (compile:compileIncremental) Compilation failed >>>>>>> [error] Total time: 3 s, completed May 12, 2015 4:11:53 PM >>>>>>> >>>>>>> I double checked my code includes import sqlContext.implicits._ >>>>>>> after reading this post >>>>>>> <https://mail-archives.apache.org/mod_mbox/spark-user/201503.mbox/%3c1426522113299-22083.p...@n3.nabble.com%3E> >>>>>>> on spark mailing list, even tried to use toDF("col1", "col2") >>>>>>> suggested by Xiangrui Meng in that post and got the same error. >>>>>>> >>>>>>> The Spark version is specified in build.sbt file as follows: >>>>>>> >>>>>>> scalaVersion := "2.11.6" >>>>>>> libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "1.3.1" >>>>>>> % "provided" >>>>>>> libraryDependencies += "org.apache.spark" % "spark-mllib_2.11" % "1.3.1" >>>>>>> >>>>>>> Anyone have ideas the cause of this error? >>>>>>> >>>>>>> REGARDS, >>>>>>> Todd Leo >>>>>>> >>>>>>> >>>>>> >>>