복붙노트

[HADOOP] 돼지를 사용하여 hdfs에서 트위터 데이터를로드하는 방법?

HADOOP

돼지를 사용하여 hdfs에서 트위터 데이터를로드하는 방법?

방금 flume을 사용하여 트위터 데이터를 스트리밍하고 HDFS에 클러스터링하여 분석을 위해 돼지에로드하려고합니다. 기본 JsonLoader 함수는 데이터를로드 할 수 없으므로 Google에서 이러한 종류의 데이터를로드 할 수있는 라이브러리를 검색합니다. 나는이 링크를 발견하고 거기에 지시를 따릅니다.

결과는 다음과 같습니다

REGISTER '/home/hduser/Downloads/json-simple-1.1.1.jar';

2016-02-22 20:54:46,539 [main] INFO  org.apache.hadoop.conf.Configuration.deprecation - fs.default.name is deprecated. Instead, use fs.defaultFS

다른 견인 명령에도 동일합니다.

이제이 명령을 사용하여 데이터를로드하려고 할 때

load_tweets = LOAD '/TwitterData/' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') AS myMap;

이 오류를 보여줍니다

2016-02-22 20:58:01,639 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve com.twitter.elephantbird.pig.load.JsonLoader using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]
Details at logfile: /home/hduser/pig-0.15.0/pig_1456153061619.log

어떻게 해결하고 올바르게로드합니까?

참고 : 내 데이터는 최근 릴리스 영화 데드 풀 트위터 데이터에 관한 것입니다.

해결법

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

    1.아래 항아리를 돼지로 등록해야합니다.이 항아리에는 액세스하려는 적절한 클래스가 포함되어 있습니다.

    아래 항아리를 돼지로 등록해야합니다.이 항아리에는 액세스하려는 적절한 클래스가 포함되어 있습니다.

    코끼리 새 돼지 -4.1.jar

    편집 : 적절한 단계.

    REGISTER '/home/hdfs/json-simple-1.1.jar';
    
    REGISTER '/home/hdfs/elephant-bird-hadoop-compat-4.1.jar';
    
    REGISTER '/home/hdfs/elephant-bird-pig-4.1.jar';
    
    load_tweets = LOAD '/user/hdfs/twittes.txt' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') AS myMap;
    
    dump load_tweets;
    

    로컬 클러스터에서 위의 단계를 사용했으며 정상적으로 작동하므로로드를 실행하기 전에 이러한 항아리를 추가해야합니다.

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

    2.블로그에 표시된대로 3 개의 Jar 파일을 등록해야합니다. 각 병에는 고유의 중요성이 있습니다.

    블로그에 표시된대로 3 개의 Jar 파일을 등록해야합니다. 각 병에는 고유의 중요성이 있습니다.

    elephant-bird-hadoop-compat-4.1.jar- 1.x와 2.x 사이의 Hadoop 비 호환성을 처리하기위한 유틸리티

    elephant-bird-pig-4.1.jar-- 돼지 용 JSON 로더, 각 Json 레코드를 Pig에로드합니다.

    json-simple-1.1.1.jar--Java에서 사용 가능한 Json 파서 중 하나

    Jar를 등록한 후 다음 pig 스크립트를 사용하여 트윗을로드 할 수 있습니다.

    load_tweets = LOAD '/user/flume/tweets/' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') AS myMap;
    

    트윗을로드 한 후 덤프하여 볼 수 있습니다.

    dump load_tweets
    
  3. from https://stackoverflow.com/questions/35557555/how-to-load-twitter-data-from-hdfs-using-pig by cc-by-sa and MIT license