0
여기 돼지 코드를 넣습니다. 이 코드를 실행하려고하면 오류가 발생합니다. 디버깅 할 수 없습니다. 어느 누구라도 코드 디버깅에 도움이 될 수 있습니까? 입력 및 출력 결과와 함께 답을 게시하십시오.데이터 세트 hadoop
사람들에게 입력 및 출력 결과에 대한 문제를 대답하도록 요청할 것입니다. 부디.
여기 돼지 코드를 넣습니다. 이 코드를 실행하려고하면 오류가 발생합니다. 디버깅 할 수 없습니다. 어느 누구라도 코드 디버깅에 도움이 될 수 있습니까? 입력 및 출력 결과와 함께 답을 게시하십시오.데이터 세트 hadoop
사람들에게 입력 및 출력 결과에 대한 문제를 대답하도록 요청할 것입니다. 부디.
이 데이터 집합의 문제는 여러 문자가 구분 기호 "::"로 나타납니다. 돼지에서는 여러 문자를 구분 기호로 사용할 수 없습니다. 당신이이 사이트 http://www.grouplens.org/datasets/movielens/을에서 데이터 집합을 다운로드 옵션을 시도 3 개 가지 옵션
1. Use REGEX_EXTRACT_ALL build-in function(need to write regex for this input)
2. Write custom UDF
3. Replace the multiple character delimiter to single character delimiter(This is very simple).
이이 문제를 해결하려면 3
1. Go to your input folder /home/bigdata/sample/inputs/
2. Run this sed command
>> sed 's/::/$/g' movies.dat > Testmovies.dat
>> sed 's/::/$/g' ratings.dat > Testratings.dat
>> sed 's/::/$/g' users.dat > Testusers.dat
이 하나에 여러 문자 구분 기호를 ':'으로 변환됩니다 문자 구분 기호 '$'. '$'는 3 개의 파일 모두에서 구분 기호 bcoz로 선택했습니다. '$'는 없습니다.
3. Now load the new input files(Testmovies.dat,Testratings.dat,Testusers.dat) in the pig script using '$' as a delimiter
는 돼지 스크립트를 수정 : 나는 돼지 로컬 모드에서 당신의 제안을 위의 코드를 실행하기 위해 노력했다
-- filtering action and war movies
A = LOAD 'Testmovies.dat' USING PigStorage('$')as (MOVIEID: chararray,TITLE:chararray,GENRE: chararray);
B = filter A by ((GENRE matches '.*Action.*') AND (GENRE matches '.*War.*'));
-- finding action and war movie ratings
C = LOAD 'Testratings.dat' USING PigStorage('$')as (UserID: chararray, MovieID:chararray, Rating: int, Timestamp: chararray);
D = JOIN B by $0, C by MovieID;
-- calculating avg
E = group D by $0;
F = foreach E generate group as mvId, AVG(D.Rating) as avgRating;
-- finding max avg-rating
G = group F ALL;
H = FOREACH G GENERATE MAX(F.$1) AS avgMax;
-- finding max avg-rated movie
I = FILTER F BY (float)avgRating == (float)H.avgMax;
-- filtering female users age between 20-30
J = LOAD 'Testusers.dat' USING PigStorage('$') as (UserID: chararray, Gender: chararray, Age: int, Occupation: chararray, Zip: chararray);
K = filter J by ((Gender == 'F') AND (Age >= 20 AND Age <= 30));
L = foreach K generate UserID;
-- finding filtered female users rated movies
M = JOIN L by $0, C by UserID;
-- finding filtered female users who rated highest rated action and war movies
N = JOIN I by $0, M by $2;
-- finding distinct female users
O = foreach N generate $2 as User;
Q1 = Distinct O;
DUMP Q1;
Sample Output:
(5763)
(5785)
(5805)
(5808)
(5812)
(5825)
(5832)
(5852)
(5869)
(5878)
(5920)
(5955)
(5972)
(5974)
(6009)
(6036)
. 그러나 다음과 같은 오류가 발생하여 출력이 나지 않습니다. – blackbookstar
입력 : "/home/bigdata/movies/Testratings.dat"에서 2000360 레코드를 성공적으로 읽음 "/home/bigdata/movies/Testusers.dat"에서 6040 레코드를 성공적으로 읽음 58 레코드를 성공적으로 읽음 : "/home/bigdata/movies/Testratings.dat" "/home/bigdata/movies/Testmovies.dat"에서 3883 개의 레코드를 성공적으로 읽음 출력 : 성공적으로 "file :/TMP는/temp1612815615/tmp206540224 " 카운터 : 총 레코드를 작성 : 0 총 바이트 작성 : 0 Spillable 메모리 관리자 유출 수 : 사전에 유출 0 총 가방 : 0 적극적으로 기록한 총 기록 : 0 – blackbookstar
2014-12-07 16 : 32 : 40,346 [main] WARN org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - ACCESSING_NON_EXISTENT_FIELD에 6009020 시간의 경고가 발생했습니다. 2014-12-07 16 : 32 : 40,348 [main] 정보 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 성공! 2014-12-07 16 : 32 : 40,355 [main] WARN org.apache.pig.data.SchemaTupleBackend - SchemaTupleBackend가 이미 초기화되었습니다. – blackbookstar