2017-02-07 8 views
1

Я пытаюсь запустить простую программу Спарк SCALA построен с MavenИсключение при работе с программой Spark, с контекстом SQL в Scala

Ниже приведен исходный код:

case class Person(name:String,age:Int) 


object parquetoperations { 
    def main(args:Array[String]){ 

    val sparkconf=new SparkConf().setAppName("spark1").setMaster("local") 
    val sc=new SparkContext(sparkconf); 
    val sqlContext= new SQLContext(sc) 
    import sqlContext.implicits._ 
    val peopleRDD = sc.textFile(args(0)); 
    val peopleDF=peopleRDD.map(_.split(",")).map(attributes=>Person(attributes(0),attributes(1).trim.toInt)).toDF() 
    peopleDF.createOrReplaceTempView("people") 
    val adultsDF=sqlContext.sql("select * from people where age>18") 
    //adultsDF.map(x => "Name: "+x.getAs[String]("name")+ " age is: "+x.getAs[Int]("age")).show(); 

    } 
} 

и ниже зависимостей Maven I иметь.

<dependency> 
    <groupId>org.scala-lang</groupId> 
    <artifactId>scala-library</artifactId> 
    <version>2.10.0</version> 
</dependency> 
<dependency> 
<groupId>org.apache.spark</groupId> 
<artifactId>spark-core_2.10</artifactId> 
<version>2.1.0</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-sql_2.10</artifactId> 
    <version>2.1.0</version> 
</dependency> 
<dependency> 
    <groupId>org.scala-lang</groupId> 
    <artifactId>scala-xml</artifactId> 
    <version>2.11.0-M4</version> 
</dependency> 

Он выдает следующую ошибку. Пытались отлаживать различными способами, не повезло

Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.$scope()Lscala/xml/TopScope$;

Похоже, что это ошибка, связанная с загрузкой искрой веб-интерфейс

ответ

0

Все ваши зависимостями на Scala 2.10, но ваш Scala-XML зависимость является на Scala 2.11.

<dependency> 
    <groupId>org.scala-lang</groupId> 
    <artifactId>scala-xml</artifactId> 
    <version>2.11.0-M4</version> 
</dependency> 

Btw, если вы действительно не имеют веские основания, чтобы сделать это, я хотел бы предложить вам перейти на Scala 2.11.8. Все намного лучше с 2,11 по сравнению с 2.10.

+0

Я пробовал использовать scala 2.11. Столкнувшись с той же ошибкой –

+0

, перейдите через свой pom и замените все 2.10 на 2.11 и повторите попытку. Как я уже сказал, у вас 2.11 в одном месте и 2.10 в других. Вы должны быть последовательными. – marios

+0

Еще одна вещь: Scala XML был частью Scala до 2.10, поэтому весь XML-код включен в 2.10, вам не нужно добавлять зависимость ** scala-xml ** (если вы решили использовать 2.10) , – marios