2017-12-07 11 views
0

다음 코드가 있습니다. 나는 병으로 그것을 바꿨다ClassNotFoundException in

import org.apache.spark.SparkContext 
import org.apache.spark.SparkConf 
import org.apache.spark.sql.SparkSession 
import org.apache.spark.sql.SQLContext 


case class Student (StudentID: Long, 
           creationdate : java.sql.Timestamp, 
           mark1 : String, 
           mark2 : String 
           ) 

object Main { 
    def main(args: Array[String]): Unit = { 
    val conf = new SparkConf().setAppName("EMRCustomerApplication") 
    conf.set("spark.driver.allowMultipleContexts","true") 
    val spark = SparkSession 
     .builder() 
     .appName("Spark In Action") 
     .master("local") 
     .enableHiveSupport() 
     .getOrCreate() 
    System.setProperty("hive.metastore.uris", "thrift://internal-shared-hive-metastore-elb-550897717.us-west-2.elb.amazonaws.com:9083") 
    System.setProperty("hive.metastore.execute.setugi", "false") 
    System.setProperty("spark.driver.allowMultipleContexts","true") 
    val sc = new SparkContext(conf) 
    conf.set("spark.driver.allowMultipleContexts","true") 
    import spark.implicits._ 

    val allRecordsDF = spark.sql(""" select * fromstudent """) 


    } 
} 

나는 아래 예외를 얻고있다. 내 생각에 - 클래스 옵션은 스파크 항아리의 주요 클래스를 언급하는 것입니다. 이것은 내가 실행 한 명령입니다.

spark-submit --class "Main" s3://Users/test/test_2.10-1.0.jar 

나는 그렇게했습니다. 누구든지 문제가 무엇인지 볼 수 있습니까?

java.lang.ClassNotFoundException: Main 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:348) 
    at org.apache.spark.util.Utils$.classForName(Utils.scala:229) 
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:695) 
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187) 
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212) 
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126) 
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 
Command exiting with ret '101' 

답변

0

패키지 아래에 클래스를 배치하고 패키지에 클래스 접두어를 붙여 실행하십시오.

+0

나는 그것을 시도했다, 아직도 작동하지 않는다 – Srinivas

+0

문제는 위치와 것 같다. 제출 된 jar가 s3에 있음을 알았습니다. 항아리가 로컬 머신에 있어야한다고 생각합니다. jar 파일을 로컬 파일 시스템에 위치 시키려고 시도 했습니까? – nkasturi