Spark Streaming Error java.lang.NoSuchMethodError:twitter4j

时间:2016-10-12 23:00:16

标签: scala maven apache-spark spark-streaming

我构建了一个Uber Jar来运行一个简单的Spark Streaming Application,它会因以下错误而失败:

java.lang.NoSuchMethodError: twitter4j.TwitterStream.addListener(Ltwitter4j/StreamListener;)

我认为Uber jar可能不包含该类,但是该类存在:

user@someMachine~/somedir$ jar tvf target/your-project-0.0.1-SNAPSHOT-jar-with-dependencies.jar | grep twitter4j/TwitterStream.class
1064 Tue Jun 23 19:27:48 UTC 2015 twitter4j/TwitterStream.class

然后我认为twitter4j-stream使用的版本4.0.4spark-streaming-twitter_2.10版本1.6.0-cdh5.8.0的依赖关系,可能不包含该类的方法AddListener TwitterStream但确实如此:http://twitter4j.org/oldjavadocs/4.0.4/index.html

我终于尝试将jar添加到类路径但遇到了同样的错误。除了尝试使用不同的工具进行构建之外,我不确定从何处开始。

有什么想法?这是pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
  some-company

  -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.some-company.apps.your_project</groupId>
  <artifactId>your-project</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>"Template project"</name>

  <repositories>
    <repository>
      <id>scala-tools.org</id>
      <name>Scala-tools Maven2 Repository</name>
      <url>http://scala-tools.org/repo-releases</url>
    </repository>
    <repository>
      <id>maven-hadoop</id>
      <name>Hadoop Releases</name>
      <url>https://repository.cloudera.com/content/repositories/releases/</url>
    </repository>
    <repository>
      <id>cloudera-repos</id>
      <name>Cloudera Repos</name>
      <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>scala-tools.org</id>
      <name>Scala-tools Maven2 Repository</name>
      <url>http://scala-tools.org/repo-releases</url>
    </pluginRepository>
  </pluginRepositories>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>net.alchim31.maven</groupId>
        <artifactId>scala-maven-plugin</artifactId>
        <version>3.2.2</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id> 
            <phase>package</phase> 
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

    </plugins>  
  </build>

  <dependencies>
    <dependency>
      <groupId>org.scala-lang</groupId>
      <artifactId>scala-library</artifactId>
      <version>2.10.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-core_2.10</artifactId>
      <version>1.6.0-cdh5.8.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.spark</groupId>
      <artifactId>spark-mllib_2.10</artifactId>
      <version>1.6.0-cdh5.8.0</version>
    </dependency>
   <dependency>
     <groupId>org.apache.spark</groupId>
     <artifactId>spark-streaming-twitter_2.10</artifactId>
     <version>1.6.0-cdh5.8.0</version>
   </dependency>
   <dependency>
     <groupId>org.twitter4j</groupId>
     <artifactId>twitter4j-core</artifactId>
     <version>4.0.4</version>
   </dependency>
   <dependency>
     <groupId>com.google.code.gson</groupId>
     <artifactId>gson</artifactId>
     <version>2.3</version>
   </dependency>
   <dependency>
     <groupId>commons-cli</groupId>
     <artifactId>commons-cli</artifactId>
     <version>1.2</version>
   </dependency>
  </dependencies>
</project>

0 个答案:

没有答案