복붙노트

[HADOOP] 수로 - TwitterSource 언어 필터

HADOOP

수로 - TwitterSource 언어 필터

나는 다음과 같은 경우에 여러분의 도움을 부탁드립니다.

나는 현재 클라우 데라 CDH 5.1.2을 사용하고 있는데 나는 그것이 다음 porsts (클라우 데라)에 설명 된대로 수로를 이용하여 트위터 데이터를 수집하려고 :

나는 소스를 다운로드 pom.xml 파일의 버전을 업데이트 한 후 수로-소스를 재건 :

<flume.version>1.5.0-cdh5.1.2</flume.version>
<hadoop.version>2.3.0-cdh5.1.2</hadoop.version>

그것은 완벽했다.

그 후 나는 특정 언어의 트윗을 캡처하는 "언어"필터를 추가하고 싶었다. 이를 위해, 나는 이런 식으로 어떻게 든 FilterQuery.language 메소드를 호출 할 수있는 TwitterSource.java 수정 :

나는 twitter4j 스트림 버전 3.0.6를 사용하는 것을 시도하고있다. 나는 pom.xml 파일에 업데이트 :

<!-- For the Twitter API -->
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-stream</artifactId>
<version>3.0.6</version>
</dependency>

이러한 설정을 통해 나는 항아리 (MVN 패키지) 재건.

내 에이전트를 시작하면, 다음과 같은 예외 (NoSuchMethodError)를 얻을 :

나는 확인하고, twitter4j 스트림이 버전은 언어 방법을 포함 :

내가 무엇을 잘못하고 있지?

미리 감사드립니다,

베드로

해결법

  1. ==============================

    1.마지막으로 나는이 문제를 해결하기 위해 관리. 그래서 여기에 같은 문제에 직면하고 거기에 사람에 대한 해결책입니다.

    마지막으로 나는이 문제를 해결하기 위해 관리. 그래서 여기에 같은 문제에 직면하고 거기에 사람에 대한 해결책입니다.

    (원래의 게시물에 위의 경우) 우선은 /var/lib/flume-ng/plugins.d/twitter-streaming/lib/ 내 생성 항아리를 배치하고,이 위치를 사용하는 클라우 데라 매니저 설정에서 설정 .

    이 경우 CM은 (소포 디렉토리 후)와 주자 파일의 클래스 경로의 디렉토리를 배치했다. 그래서 클래스 경로에있는 디렉토리 순서는 다음과 같이 보았다 :

    불행히도 소포 디렉토리에 twitter4j 스트림-3.0.3.jar와 twitter4j 코어-3.0.3.jar, 그리고 수로 대신 3.0.6의 것을 사용하려고하고, 해당 버전에 FilterQuery.language 분명히 '아무튼 t이 존재합니다.

    그래서 난 그냥 소포 디렉토리에서 그 항아리를 삭제하고, 지금은 잘 작동합니다.

  2. ==============================

    2.나는 cdh3 이것을 시도하고 저와 잘 일했다. 내가 알아 차 렸던 것 중 하나는 시스템 시간이 현재 시간으로 설정해야했다. 귀하의 경우에는, 나는 그것이 FilterQuery 클래스의 언어 방법을 찾고 생각합니다.

    나는 cdh3 이것을 시도하고 저와 잘 일했다. 내가 알아 차 렸던 것 중 하나는 시스템 시간이 현재 시간으로 설정해야했다. 귀하의 경우에는, 나는 그것이 FilterQuery 클래스의 언어 방법을 찾고 생각합니다.

  3. from https://stackoverflow.com/questions/27901714/flume-twittersource-language-filter by cc-by-sa and MIT license