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
>>>>>> ​
>>>>>>
>>>>>
>>

Reply via email to