2015-05-20 28 views
11

Używam zapłonową 1.3.1 prebuild wersji zapłonową-1.3.1-Bin-hadoop2.6.tgz

Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.$conforms()Lscala/Predef$$less$colon$less; at org.apache.spark.util.Utils$.getSystemProperties(Utils.scala:1418) at org.apache.spark.SparkConf.(SparkConf.scala:58) at org.apache.spark.SparkConf.(SparkConf.scala:52) at com.zoho.zbi.Testing.test(Testing.java:43) at com.zoho.zbi.Testing.main(Testing.java:39) Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties

próbuję app proste demo, aby zapisać się do Cassandry

SparkConf batchConf= new SparkConf() 
      .setSparkHome(sparkHome) 
      .setJars(jars) 
      .setAppName(ZohoBIConstants.getAppName("cassandra"))//NO I18N 
      .setMaster(master).set("spark.cassandra.connection.host", "localhost"); 

      JavaSparkContext sc = new JavaSparkContext(batchConf); 
      // here we are going to save some data to Cassandra... 
      List<Person> people = Arrays.asList(
        Person.newInstance(1, "John", new Date()), 
        Person.newInstance(2, "Anna", new Date()), 
        Person.newInstance(3, "Andrew", new Date()) 
      ); 
//   Person test = Person.newInstance(1, "vini", new Date())'' 
      System.out.println("Inside Java API Demo : "+people); 
      JavaRDD<Person> rdd = sc.parallelize(people); 
      System.out.println("Inside Java API Demo rdd : "+rdd); 
      javaFunctions(rdd).writerBuilder("test", "people", mapToRow(Person.class)).saveToCassandra(); 
      System.out.println("Stopping sc"); 
      sc.stop(); 

kiedy przesłać za pomocą iskry przedstawić swoją pracę

bin/spark-submit --class "abc.efg.Testing" --master spark://xyz:7077 /home/test/target/uber-Cassandra-0.0.1-SNAPSHOT.jar 

Tu jest mój pom

Zależności

<dependencies> 
    <!-- Scala --> 
    <dependency> 
     <groupId>org.scala-lang</groupId> 
     <artifactId>scala-library</artifactId> 
     <version>${scala.version}</version> 
     <scope>compile</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.scala-lang</groupId> 
     <artifactId>scala-compiler</artifactId> 
     <version>${scala.version}</version> 
    </dependency> 
    <!-- END Scala --> 
    <dependency> 
    <groupId>com.google.guava</groupId> 
    <artifactId>guava</artifactId> 
    <version>18.0</version> 
    </dependency> 

    <dependency> 
    <groupId>com.yammer.metrics</groupId> 
    <artifactId>metrics-core</artifactId> 
    <version>2.2.0</version> 
    </dependency> 

    <dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>3.8.1</version> 
    <scope>test</scope> 
    </dependency> 

    <dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.1.0</version> 
    <scope>provided</scope> 
    </dependency> 

    <dependency> 
    <groupId>com.datastax.cassandra</groupId> 
    <artifactId>cassandra-driver-core</artifactId> 
    <version>2.1.5</version> 
    </dependency> 

    <dependency> 
    <groupId>org.json</groupId> 
    <artifactId>json</artifactId> 
    <version>20090211</version> 
    </dependency> 
<!-- Cassandra Spark Connector dependency --> 
    <dependency> 
    <groupId>com.datastax.spark</groupId> 
    <artifactId>spark-cassandra-connector_2.10</artifactId> 
    <version>1.2.0</version> 
    </dependency> 
<!-- Cassandra java Connector dependency --> 
    <dependency> 
    <groupId>com.datastax.spark</groupId> 
    <artifactId>spark-cassandra-connector-java_2.10</artifactId> 
    <version>1.2.0</version> 
    </dependency> 

<!-- Spark Core dependency --> 
     <dependency> 
       <groupId>org.apache.spark</groupId> 
       <artifactId>spark-core_2.11</artifactId> 
       <version>1.3.1</version> 
     </dependency> 
    <!-- Spark dependency --> 
     <dependency> 
       <groupId>org.apache.spark</groupId> 
       <artifactId>spark-streaming_2.11</artifactId> 
       <version>1.3.1</version> 
     </dependency> 
    <!-- Spark dependency --> 
     <dependency> 
       <groupId>org.apache.spark</groupId> 
       <artifactId>spark-streaming-kafka_2.10</artifactId> 
       <version>1.3.1</version> 
     </dependency> 
    </dependencies> 

i buduję wykorzystujące

<build> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <version>2.3</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <filters> 
         <filter> 
          <artifact>*:*</artifact> 
          <excludes> 
           <exclude>META-INF/*.SF</exclude> 
           <exclude>META-INF/*.DSA</exclude> 
           <exclude>META-INF/*.RSA</exclude> 
          </excludes> 
         </filter> 
        </filters> 
        <finalName>uber-${project.artifactId}-${project.version}</finalName> 
       </configuration> 
      </plugin> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 

     </plugins> 
    </build> 

ale kiedy złożyć poprzez jego kod nie działa, każda pomoc jest znacznie appriciated .. Próbowałem dodany prop scala2.10.4 w pom nadal nie ma szczęścia

Używam Eclipse jako uruchamiane jako aplikacja ze wszystkimi pana, iskra domu i słoiki ustawić na sparkConf błąd pokazuje dokładnie w sparkConf

Moja wersja Scala

scala -version Scala wersja kodu biegacz 2.11.2 - Prawa autorskie 2002-2013, LAMP/EPFL

czy to ma coś wspólnego z tym problem?

Jak przejść do starszej wersji scala? W dokumencie jest napisane, że isk 1.3.1 obsługuje wersje 2.10.x scala, proszę dać mi znać, jak to naprawić

+0

Znalazłeś rozwiązanie do tej pory? Mam podobny problem i byłbym zainteresowany odpowiedzią. – DreamFlasher

+0

Czy próbowałeś odpowiedzi z @Maksud? – javadba

Odpowiedz

16

Wystąpił problem z powodu niezgodności w wersjach Scala. Kompilacja Prebudowana Spark 1.3.1 jest kompilowana ze starszą wersją Scala 2.10, ponieważ niektóre z zależności Spark nie są obsługiwane w wersji 2.11, w tym obsługa JDBC.

Proponuję uruchomić twój klaster Spark ze Scala 2.10. Jednakże, jeśli chcesz, możesz również przygotować pakiet zapłonową Scala 2.11 w następujący sposób:

dev/change-version-to-2.11.sh 
mvn -Pyarn -Phadoop-2.4 -Dscala-2.11 -DskipTests clean package 
+0

@mithra (OP) To wydaje się dobrą odpowiedzią. Spróbowałeś? – javadba

+0

Najwyraźniej jest to również napisane na stronie dokumentacji Sparka, w sekcji Pobieranie (ja to przegapiłem ... i ta odpowiedź pomogła mi: P): Spark działa na Java 7+, Python 2.6+ i R 3.1+. W przypadku interfejsu API Scala Spark 1.5.1 używa Scala 2.10. Będziesz musiał użyć kompatybilnej wersji Scala (2.10.x). – Markon

+0

Tak, mam ten sam problem. Ta odpowiedź rozwiązała to. Dzięki. –